:root{
  --bg:#f5f6f8;
  --panel:#ffffff;
  --surface:#ffffff;
  --panel-2:#fafbfc;
  --border:#e5e8ee;
  --border-strong:#d5dae3;
  --text:#1f2933;
  --muted:#7b8794;
  --muted-2:#9aa5b1;
  --icon:var(--icon);
  --accent:#4f46e5;
  --accent-soft:#eef1ff;
  --danger:#e02424;
  --grid:#e2e5ea;
  --shadow-sm:0 1px 2px rgba(16,24,40,.06), 0 1px 3px rgba(16,24,40,.08);
  --shadow-md:0 4px 12px rgba(16,24,40,.08), 0 2px 4px rgba(16,24,40,.05);
  --shadow-lg:0 12px 32px rgba(16,24,40,.16);
  --radius:10px;
  --font:"Segoe UI", system-ui, -apple-system, BlinkMacSystemFont, Roboto, "Helvetica Neue", Arial, sans-serif;
  --sidebar-w:268px;
  --inspector-w:300px;
}

body.theme-dark{
  --bg:#0e1218;
  --panel:#151a22;
  --surface:#1a2029;
  --panel-2:#1e242e;
  --border:#28303c;
  --border-strong:#39434f;
  --text:#e7ecf3;
  --muted:#95a1b2;
  --muted-2:#6d7887;
  --icon:#a3aebd;
  --accent:#818cf8;
  --accent-soft:#232b47;
  --danger:#f87171;
  --grid:#212936;
  --shadow-sm:0 1px 2px rgba(0,0,0,.4);
  --shadow-md:0 6px 16px rgba(0,0,0,.45);
  --shadow-lg:0 18px 40px rgba(0,0,0,.55);
  color-scheme:dark;
}

*{box-sizing:border-box}
html,body{height:100%}
body{
  margin:0;
  font-family:var(--font);
  font-size:14px;
  color:var(--text);
  background:var(--bg);
  overflow:hidden;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}
button,input,select,textarea{font-family:inherit;font-size:inherit;color:inherit}
button{cursor:pointer}
.hidden{display:none !important}
.spacer{flex:1 1 auto}
.muted{color:var(--muted)}
hr{border:0;border-top:1px solid var(--border);margin:6px 0}

/* ===================== APP SHELL ===================== */
#app{display:flex;height:100vh;width:100vw;overflow:hidden}

/* ===================== SIDEBAR ===================== */
.sidebar{
  width:var(--sidebar-w);
  flex:0 0 var(--sidebar-w);
  background:var(--panel);
  border-right:1px solid var(--border);
  display:flex;flex-direction:column;
  min-height:0;
  transition:margin-left .2s ease;
  z-index:30;
}
.sidebar.collapsed{margin-left:calc(-1 * var(--sidebar-w))}
.sidebar-head{
  display:flex;align-items:center;justify-content:space-between;
  padding:14px 14px 10px;
}
.brand{display:flex;align-items:center;gap:9px;font-weight:700;letter-spacing:-.01em;font-size:15px}
.brand-dot{width:14px;height:14px;border-radius:4px;background:linear-gradient(135deg,#6366f1,#22d3ee);display:inline-block}
.sidebar-top{padding:0 12px 10px;display:flex;flex-direction:column;gap:8px}
.map-list{flex:1 1 auto;overflow-y:auto;padding:4px 8px 8px;min-height:0}
.sidebar-foot{padding:10px 12px;border-top:1px solid var(--border)}

.map-item{
  position:relative;display:flex;flex-direction:column;gap:2px;
  padding:9px 10px;border-radius:9px;cursor:pointer;user-select:none;
  border:1px solid transparent;
}
.map-item:hover{background:var(--panel-2)}
.map-item.active{background:var(--accent-soft);border-color:#dfe3ff}
.map-item .mi-name{
  font-weight:600;font-size:13.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  padding-right:52px;
}
.map-item .mi-meta{font-size:11.5px;color:var(--muted-2)}
.map-item .mi-actions{
  position:absolute;top:6px;right:6px;display:none;gap:2px;
}
.map-item:hover .mi-actions{display:flex}
.mi-actions .icon-btn{width:24px;height:24px;font-size:12px}
.map-item input.rename{
  width:100%;border:1px solid var(--accent);border-radius:7px;padding:3px 6px;
  font-weight:600;font-size:13.5px;outline:none;background:var(--surface);
}
.map-empty{padding:24px 12px;text-align:center;color:var(--muted-2);font-size:13px}

/* agrupamentos */
.map-group{margin-bottom:4px;border-radius:9px}
.map-group .mg-head{
  display:flex;align-items:center;gap:5px;padding:5px 6px;border-radius:8px;cursor:pointer;
  user-select:none;
}
.map-group .mg-head:hover{background:var(--panel-2)}
.mg-toggle{
  width:20px;height:20px;flex:0 0 auto;border:0;background:transparent;border-radius:5px;
  color:var(--muted);display:inline-flex;align-items:center;justify-content:center;padding:0;
}
.mg-name{
  flex:1 1 auto;font-size:11.5px;font-weight:700;color:var(--muted);text-transform:uppercase;
  letter-spacing:.04em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.mg-count{font-size:10.5px;font-weight:700;color:var(--muted-2);background:var(--panel-2);border-radius:10px;padding:1px 7px}
.mg-actions{display:none;gap:2px}
.mg-actions .icon-btn{width:22px;height:22px;font-size:11px}
.mg-head:hover .mg-actions{display:flex}
.mg-items{padding-left:8px;border-left:1px solid var(--border);margin-left:9px}
.map-group.collapsed .mg-items{display:none}
.map-group.ungrouped{margin-top:6px}
.map-group.drop-hover{background:var(--accent-soft);outline:1.5px dashed var(--accent);outline-offset:-2px}
.map-item.dragging{opacity:.45}

/* ===================== MAIN ===================== */
#main{flex:1 1 auto;display:flex;flex-direction:column;min-width:0;min-height:0;position:relative}

#toolbar{
  height:54px;flex:0 0 54px;display:flex;align-items:center;gap:6px;
  padding:0 12px;background:var(--panel);border-bottom:1px solid var(--border);
  z-index:20;position:relative;
}
.map-title{
  font-size:15px;font-weight:600;border:1px solid transparent;background:transparent;
  border-radius:8px;padding:6px 10px;min-width:120px;max-width:320px;flex:0 1 auto;
  outline:none;
}
.map-title:hover{background:var(--panel-2);border-color:var(--border)}
.map-title:focus{background:var(--surface);border-color:var(--accent)}
.save-status{
  font-size:12px;color:var(--muted);padding:3px 9px;border-radius:20px;background:var(--panel-2);
  border:1px solid var(--border);white-space:nowrap;
}
.save-status[data-state="saving"]{color:#b45309;border-color:#fde68a;background:var(--surface)beb}
.save-status[data-state="saved"]{color:#047857;border-color:#bbf7d0;background:#f0fdf4}

.icon-btn{
  width:34px;height:34px;border-radius:8px;border:1px solid transparent;background:transparent;
  display:inline-flex;align-items:center;justify-content:center;font-size:16px;color:var(--icon);
  line-height:1;
}
.icon-btn:hover{background:var(--panel-2);border-color:var(--border);color:var(--text)}
.icon-btn:disabled{opacity:.35;cursor:default;background:transparent;border-color:transparent}
.icon-btn.active{background:var(--accent-soft);border-color:#dfe3ff;color:var(--accent)}

.btn{
  border:1px solid var(--border-strong);background:var(--surface);border-radius:8px;
  padding:7px 12px;font-weight:600;font-size:13px;color:var(--text);
  display:inline-flex;align-items:center;gap:6px;justify-content:center;
  box-shadow:var(--shadow-sm);transition:background .12s,border-color .12s;
}
.btn:hover{background:var(--panel-2)}
.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}
.btn.primary:hover{background:#4338ca}
.btn.ghost{box-shadow:none;background:transparent;border-color:transparent;color:var(--icon)}
.btn.ghost:hover{background:var(--panel-2);border-color:var(--border)}
.btn.danger{color:var(--danger);border-color:#fbd5d5;background:var(--surface)}
.btn.danger:hover{background:#fef2f2}
.btn.block{width:100%}

.input{
  width:100%;border:1px solid var(--border-strong);border-radius:8px;padding:7px 10px;
  background:var(--surface);outline:none;font-size:13px;
}
.input:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(79,70,229,.12)}
.input.sm{padding:5px 8px;width:56px;text-align:center}

.menu-anchor{position:relative}
.menu{
  position:absolute;top:calc(100% + 6px);right:0;min-width:210px;background:var(--surface);
  border:1px solid var(--border);border-radius:11px;box-shadow:var(--shadow-lg);
  padding:6px;z-index:60;
}
.menu button{
  display:flex;align-items:center;gap:9px;width:100%;text-align:left;border:0;
  background:transparent;border-radius:7px;padding:8px 10px;font-size:13px;font-weight:500;
}
.menu button .ico{color:var(--muted)}
.menu button:hover .ico{color:var(--accent)}
.menu button:hover{background:var(--accent-soft);color:var(--accent)}

/* ícones vetoriais */
.ico{display:inline-block;vertical-align:-0.16em;flex:0 0 auto}
.icon-btn .ico{pointer-events:none;display:block}
.btn .ico,.menu button .ico,.ctx-item .ico,.mini .ico,.pbtn .ico{pointer-events:none}

/* linha de link e imagem no painel */
.link-row{display:flex;gap:6px;align-items:center}
.link-row .input{flex:1;min-width:0}
.img-row{display:flex;gap:10px;align-items:flex-start}
.img-preview{
  width:104px;height:72px;border-radius:9px;border:1px dashed var(--border-strong);
  background:var(--panel-2);display:flex;align-items:center;justify-content:center;
  overflow:hidden;flex:0 0 auto;color:var(--muted-2);font-size:10.5px;text-align:center;
}
.img-preview img{width:100%;height:100%;object-fit:cover;display:block}
.img-actions{display:flex;gap:6px;flex-wrap:wrap;align-items:center}

/* ===================== CANVAS ===================== */
#canvas-wrap{position:relative;flex:1 1 auto;overflow:hidden;min-height:0;background:
  radial-gradient(circle at 1px 1px, var(--grid) 1px, transparent 0) 0 0/22px 22px,
  var(--bg);
}
#canvas{position:absolute;inset:0;display:block;cursor:default;touch-action:none}
#canvas.panning{cursor:grabbing}
#canvas .node .node-rect{transition:filter .1s}
#canvas text{user-select:none;-webkit-user-select:none;pointer-events:none}

.overlay{position:absolute;inset:0;pointer-events:none;overflow:hidden}
.overlay > *{pointer-events:auto}

/* quick action bar */
.quickbar{
  position:absolute;display:flex;gap:3px;background:var(--surface);border:1px solid var(--border);
  border-radius:11px;box-shadow:var(--shadow-md);padding:4px;transform:translate(-50%,-100%);
  z-index:15;pointer-events:none;
}
.quickbar .qbtn{pointer-events:auto}
.quickbar .qbtn{
  min-width:30px;height:30px;padding:0 8px;border:0;background:transparent;border-radius:7px;
  font-size:14px;display:inline-flex;align-items:center;justify-content:center;gap:5px;
  color:var(--icon);font-weight:600;
}
.quickbar .qbtn.wide{font-size:12.5px;padding:0 10px}
.quickbar .qbtn:hover{background:var(--accent-soft);color:var(--accent)}
.quickbar .qbtn .ico{pointer-events:none}
.quickbar [data-act="delete"]:hover{background:#fef2f2;color:var(--danger)}
.quickbar .sep{width:1px;background:var(--border);margin:5px 2px}
.quickbar .qcount{
  font-size:12px;font-weight:700;color:var(--accent);background:var(--accent-soft);
  border-radius:20px;padding:4px 10px;margin:0 2px;white-space:nowrap;
}
.quickbar .qdot{
  width:16px;height:16px;border-radius:50%;display:inline-block;
  border:1.5px solid var(--border-strong);background:transparent;flex:0 0 auto;
}
.quickbar .qemoji{font-size:15px;line-height:1}

/* barra de formatação do texto selecionado */
.formatbar{
  position:fixed;z-index:70;display:flex;align-items:center;gap:2px;
  background:#111827;border-radius:11px;padding:4px;box-shadow:var(--shadow-lg);
}
.formatbar button{
  border:0;background:transparent;color:#e5e7eb;border-radius:6px;
  min-width:26px;height:26px;font-size:12px;padding:0 5px;
  display:inline-flex;align-items:center;justify-content:center;
}
.formatbar button:hover{background:rgba(255,255,255,.16);color:#fff}
.formatbar button.active{background:var(--accent);color:#fff}
.formatbar .sep{width:1px;height:18px;background:rgba(255,255,255,.22);margin:0 3px}
.formatbar .sw{width:18px;height:18px;min-width:18px;border-radius:50%;border:2px solid rgba(255,255,255,.55);padding:0}
.formatbar .sw:hover{border-color:#fff;background-image:none}

/* menu de contexto do nó */
.ctxmenu{
  position:fixed;z-index:80;width:242px;background:var(--surface);border:1px solid var(--border);
  border-radius:12px;box-shadow:var(--shadow-lg);padding:6px;
  max-height:calc(100vh - 80px);overflow-y:auto;
}
.ctx-label{
  font-size:10.5px;font-weight:700;color:var(--muted-2);text-transform:uppercase;
  letter-spacing:.05em;padding:8px 8px 3px;
}
.ctx-item{
  display:flex;align-items:center;gap:9px;width:100%;
  border:0;background:transparent;border-radius:7px;padding:7px 8px;font-size:13px;text-align:left;
}
.ctx-item .cl{flex:1 1 auto}
.ctx-item .ico{color:var(--muted)}
.ctx-item:hover .ico{color:var(--accent)}
.ctx-item.danger .ico{color:var(--danger)}
.ctx-item:hover{background:var(--accent-soft);color:var(--accent)}
.ctx-item.danger{color:var(--danger)}
.ctx-item.danger:hover{background:#fef2f2;color:var(--danger)}
.ctx-item kbd{font-size:10.5px;opacity:.65;background:var(--panel-2);border:1px solid var(--border);border-radius:4px;padding:1px 5px}
.ctx-sep{height:1px;background:var(--border);margin:5px 4px}
.ctx-row{display:flex;flex-wrap:wrap;gap:4px;padding:2px 6px 8px}
.ctx-row .sw{width:20px;height:20px;border-radius:50%;border:2px solid #fff;box-shadow:0 0 0 1px var(--border-strong);padding:0;cursor:pointer}
.ctx-row .sw.none{background:linear-gradient(135deg,#fff 45%,#f87171 45%,#f87171 55%,#fff 55%)}
.ctx-row .sw.active{box-shadow:0 0 0 2px var(--accent)}
.ctx-row .sw.textc{
  display:inline-flex;align-items:center;justify-content:center;font-size:11px;font-weight:800;
  color:var(--text);background:var(--surface);
}
.ctx-row .ico{width:25px;height:25px;border:1px solid transparent;background:transparent;border-radius:6px;font-size:14px;padding:0}
.ctx-row .ico:hover,.ctx-row .ico.active{background:var(--accent-soft);border-color:#dfe3ff}
.ctx-row .icon-pick{
  width:27px;height:27px;padding:0;border:1px solid transparent;background:transparent;border-radius:7px;
  color:var(--icon);display:inline-flex;align-items:center;justify-content:center;
}
.ctx-row .icon-pick:hover{background:var(--accent-soft);border-color:#dfe3ff;color:var(--accent)}
.ctx-row .icon-pick.active{background:var(--accent-soft);border-color:var(--accent);color:var(--accent)}

.mini{
  height:27px;min-width:32px;padding:0 9px;border-radius:7px;border:1px solid var(--border-strong);
  background:var(--surface);font-size:12.5px;font-weight:600;color:var(--icon);
  display:inline-flex;align-items:center;justify-content:center;
}
.mini:hover{background:var(--panel-2);color:var(--text)}
.mini.sq{min-width:30px;padding:0}

/* seletor de status em botões */
.status-pills{display:flex;flex-wrap:wrap;gap:6px}
.status-pills button{
  display:inline-flex;align-items:center;gap:6px;cursor:pointer;
  padding:6px 11px;border-radius:20px;border:1px solid var(--border-strong);
  background:var(--surface);color:var(--muted);font-size:12.5px;font-weight:600;
  transition:background .12s,border-color .12s,color .12s;
}
.status-pills button::before{
  content:"";width:8px;height:8px;border-radius:50%;background:var(--muted-2);flex:0 0 auto;
}
.status-pills button:hover{background:var(--panel-2);color:var(--text)}
.status-pills button[data-status=""]::before{display:none}
.status-pills button[data-status="todo"]::before{background:#94a3b8}
.status-pills button[data-status="doing"]::before{background:#3b82f6}
.status-pills button[data-status="done"]::before{background:#10b981}
.status-pills button.active{color:var(--text);border-color:var(--icactive,var(--border-strong));background:var(--panel-2)}
.status-pills button[data-status="done"].active{border-color:#10b981;color:#047857;background:#f0fdf4}
.status-pills button[data-status="doing"].active{border-color:#3b82f6;color:#1d4ed8;background:#eff6ff}

/* controle de tamanho da fonte */
.size-ctrl{display:inline-flex;align-items:center;gap:4px}
.size-input{
  width:60px;height:27px;padding:0 6px;text-align:center;border-radius:7px;
  border:1px solid var(--border-strong);background:var(--surface);color:var(--text);
  font-size:12.5px;font-weight:600;outline:none;
}
.size-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(79,70,229,.14)}
body.theme-dark .status-pills button[data-status="done"].active{background:#0c2318;color:#4ade80}
body.theme-dark .status-pills button[data-status="doing"].active{background:#0d1c33;color:#60a5fa}
body.theme-dark .status-pills button[data-status="todo"].active{color:var(--text)}

/* editor do nó (contenteditable sobreposto ao nó) */
.node-editor{
  position:absolute; box-sizing:border-box; border:0; outline:none; resize:none;
  border-radius:10px; background:var(--surface); color:var(--text);
  box-shadow:0 0 0 2px var(--accent), 0 8px 24px rgba(16,24,40,.14);
  font-family:var(--font); z-index:16;
  white-space:pre-wrap; word-wrap:break-word; overflow-wrap:break-word;
  -webkit-user-select:text; user-select:text; cursor:text;
}
.node-editor:empty::before{content:attr(data-placeholder); color:var(--muted-2); font-style:italic}
.node-editor b,.node-editor strong{font-weight:700}
.node-editor i,.node-editor em{font-style:italic}
.node-editor u{text-decoration:underline}

.hint{
  position:absolute;left:50%;bottom:70px;transform:translateX(-50%);
  background:#111827;color:#fff;font-size:12.5px;padding:8px 14px;border-radius:20px;
  box-shadow:var(--shadow-md);z-index:14;pointer-events:none;opacity:.92;
  transition:opacity .2s;white-space:nowrap;
}
.hint kbd{background:rgba(255,255,255,.16);border-radius:4px;padding:1px 5px;font-family:inherit;font-size:11.5px}

.zoom-bar{
  position:absolute;left:50%;bottom:16px;transform:translateX(-50%);
  display:flex;align-items:center;gap:2px;background:var(--surface);border:1px solid var(--border);
  border-radius:11px;box-shadow:var(--shadow-md);padding:4px;z-index:15;
}
.zoom-bar button{
  border:0;background:transparent;border-radius:7px;height:30px;min-width:32px;padding:0 9px;
  font-size:13px;font-weight:600;color:var(--icon);
}
.zoom-bar button:hover{background:var(--panel-2);color:var(--text)}
.zoom-bar .zoom-val{min-width:56px;font-variant-numeric:tabular-nums}
.zoom-bar .divider{width:1px;height:20px;background:var(--border);margin:0 4px}

/* ===================== INSPECTOR ===================== */
.inspector{
  width:var(--inspector-w);flex:0 0 var(--inspector-w);background:var(--panel);
  border-left:1px solid var(--border);display:flex;flex-direction:column;z-index:25;
  min-height:0;
}
.inspector-head{
  display:flex;align-items:center;justify-content:space-between;
  padding:13px 14px;border-bottom:1px solid var(--border);font-size:13.5px;
}
.inspector-body{padding:14px;overflow-y:auto;display:flex;flex-direction:column;gap:16px;min-height:0}
.insp-section{display:flex;flex-direction:column;gap:12px;padding-bottom:15px;border-bottom:1px solid var(--border)}
.insp-section:last-child{border-bottom:0;padding-bottom:0}
.insp-section h4{margin:0;font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted-2);font-weight:700}
.fmt-row{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.fmt-btn{width:34px;height:31px;border:1px solid var(--border-strong);background:var(--surface);border-radius:8px;font-weight:700;font-size:13px;font-style:normal;text-decoration:none}
.fmt-btn.ital{font-style:italic}
.fmt-btn.under{text-decoration:underline}
.fmt-btn:hover{background:var(--panel-2)}
.fmt-btn.active{background:var(--accent);border-color:var(--accent);color:#fff}
.sm-select{width:auto;flex:1;min-width:120px;padding:6px 8px}
.btn-group{display:flex;gap:4px}
.field{display:flex;flex-direction:column;gap:6px}
.field > span{font-size:12px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.03em}
.field.row{flex-direction:row;align-items:center;justify-content:space-between}
.field textarea{
  width:100%;border:1px solid var(--border-strong);border-radius:8px;padding:8px 10px;
  outline:none;resize:vertical;line-height:1.4;font-size:13px;background:var(--surface);
}
.field textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(79,70,229,.12)}
.icon-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.icon-presets{display:flex;flex-wrap:wrap;gap:4px;max-height:132px;overflow-y:auto;padding:2px}
.icon-presets button{
  width:28px;height:28px;border:1px solid transparent;background:transparent;border-radius:7px;
  color:var(--icon);display:inline-flex;align-items:center;justify-content:center;
}
.icon-presets button:hover{background:var(--panel-2);border-color:var(--border);color:var(--accent)}
.icon-presets button.active{background:var(--accent-soft);border-color:var(--accent);color:var(--accent)}
.swatches{display:flex;flex-wrap:wrap;gap:6px}
.swatch{
  width:26px;height:26px;border-radius:50%;border:2px solid #fff;cursor:pointer;
  box-shadow:0 0 0 1px var(--border-strong);background:var(--surface);position:relative;
}
.swatch.none{background:linear-gradient(135deg,#fff 45%,#f87171 45%,#f87171 55%,#fff 55%)}
.swatch.active{box-shadow:0 0 0 2px var(--accent)}
.color-input{width:40px;height:30px;border:1px solid var(--border-strong);border-radius:8px;background:var(--surface);padding:2px}
.insp-tip{font-size:12px;color:var(--muted-2);line-height:1.5;margin:4px 0 0}
.insp-tip b{color:var(--muted)}
.insp-multi{
  font-size:12.5px;font-weight:700;color:var(--accent);background:var(--accent-soft);
  border:1px solid var(--accent);border-radius:9px;padding:8px 11px;text-align:center;
}
.note-foot{display:flex;align-items:center;justify-content:space-between;gap:8px}
.note-hint{font-size:11.5px;color:var(--muted-2)}

/* ===================== histórico de versões ===================== */
.hist-bar{display:flex;gap:8px;margin-bottom:10px}
.hist-bar .btn{flex:1 1 auto}
.hist-list{display:flex;flex-direction:column;gap:6px;max-height:46vh;overflow-y:auto;margin-top:4px}
.hist-item{
  display:flex;align-items:center;justify-content:space-between;gap:10px;
  padding:9px 11px;border:1px solid var(--border);border-radius:10px;background:var(--panel-2);
}
.hist-info{display:flex;flex-direction:column;gap:2px;min-width:0}
.hist-info strong{font-size:13px;font-weight:600}
.hist-info span{font-size:11.5px;color:var(--muted)}
.hist-actions{display:flex;gap:6px;flex:0 0 auto}
.hist-empty{padding:20px 8px;text-align:center;color:var(--muted-2);font-size:12.5px;line-height:1.5}
.field input:disabled,.field textarea:disabled,.mini:disabled{opacity:.45;cursor:default}

/* ===================== MODAL ===================== */
.modal{
  position:fixed;inset:0;background:rgba(17,24,39,.42);display:flex;align-items:center;
  justify-content:center;z-index:100;backdrop-filter:blur(2px);
}
.modal-card{background:var(--surface);border-radius:14px;box-shadow:var(--shadow-lg);width:min(520px,92vw);overflow:hidden}
.modal-head{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;border-bottom:1px solid var(--border)}
.modal-body{padding:16px}
.keys{display:grid;grid-template-columns:1fr 1fr;gap:9px 18px;font-size:13px}
.keys > div{display:flex;align-items:center;gap:5px;color:var(--text)}
kbd{
  display:inline-block;min-width:20px;text-align:center;background:var(--panel-2);
  border:1px solid var(--border-strong);border-bottom-width:2px;border-radius:6px;
  padding:2px 6px;font-family:inherit;font-size:12px;font-weight:600;color:var(--text);
}

.toast{
  position:fixed;left:50%;bottom:26px;transform:translateX(-50%);
  background:#111827;color:#fff;padding:11px 18px;border-radius:10px;font-size:13px;
  box-shadow:var(--shadow-lg);z-index:200;
}

/* ===================== PAINEL: rótulo + formatação inline ===================== */
.field-head{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:22px}
.field-head > span{
  font-size:12px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.03em;
}
.fmt-mini{display:flex;align-items:center;gap:3px}
.fmt-btn.sm{width:24px;height:22px;font-size:11.5px;border-radius:6px}
.mini.sq.xs{min-width:22px;height:22px;border-radius:6px;font-size:12px}
.size-input.xs{width:58px;height:22px;font-size:11.5px;border-radius:6px;padding:0 4px;text-align:center}
.swatches-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.swatches-row .swatches{flex:1 1 auto}
.color-custom{display:flex;align-items:center;gap:4px}
.color-input.sm{width:30px;height:26px;padding:1px;border-radius:7px}
.hex-input{
  width:76px;height:26px;padding:0 6px;border-radius:7px;border:1px solid var(--border-strong);
  background:var(--surface);color:var(--text);font-size:11px;font-weight:600;
  font-family:Consolas, "SF Mono", Menlo, monospace;outline:none;text-transform:lowercase;
}
.hex-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(79,70,229,.14)}
.color-input.active{box-shadow:0 0 0 2px var(--accent)}

/* ===================== PAINEL: seletor de ícones ===================== */
.icon-picker{display:flex;flex-direction:column;gap:8px}
.icon-tabs{display:flex;gap:4px;background:var(--panel-2);border:1px solid var(--border);border-radius:8px;padding:3px}
.icon-tabs button{
  flex:1;border:0;background:transparent;border-radius:6px;padding:5px 8px;font-size:12px;
  font-weight:600;color:var(--muted);cursor:pointer;
}
.icon-tabs button.active{background:var(--surface);color:var(--accent);box-shadow:var(--shadow-sm)}
.icon-grid{display:flex;flex-wrap:wrap;gap:4px;max-height:128px;overflow-y:auto;padding:2px}
.icon-pick{
  width:28px;height:28px;padding:0;border:1px solid transparent;background:transparent;border-radius:7px;
  color:var(--icon);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;
  font-size:16px;line-height:1;
}
.icon-pick:hover{background:var(--panel-2);border-color:var(--border);color:var(--accent)}
.icon-pick.active{background:var(--accent-soft);border-color:var(--accent);color:var(--accent)}
.icon-current{display:flex;align-items:center;gap:8px}
.icon-preview{
  width:46px;height:34px;border-radius:8px;border:1px dashed var(--border-strong);
  background:var(--panel-2);display:flex;align-items:center;justify-content:center;
  color:var(--muted-2);font-size:13px;
}
.swatch.textc{
  display:inline-flex;align-items:center;justify-content:center;font-size:11px;font-weight:800;
  color:var(--text);background:var(--surface);
}

/* ===================== seleção por área + cursor de pincel ===================== */
.marquee{
  position:absolute;border:1.5px solid var(--accent);background:rgba(79,70,229,.12);
  border-radius:4px;pointer-events:none;z-index:12;
}
#canvas.brush-cursor{
  cursor:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='26' height='26' viewBox='0 0 24 24' fill='none' stroke='%231f2933' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 21c0-3 1-5 3-6l3 3c-1 2-3 3-6 3z' fill='%234f46e5'/%3E%3Cpath d='M9 15l6-6 3 3-6 6z'/%3E%3Cpath d='M15 9l4-4a2.1 2.1 0 0 1 3 3l-4 4z'/%3E%3C/svg%3E") 3 23, crosshair;
}
#canvas.connect-mode{cursor:crosshair}

/* ===================== popover de personalização rápida ===================== */
.popover{
  position:fixed;z-index:70;background:var(--panel);border:1px solid var(--border);
  border-radius:12px;box-shadow:var(--shadow-lg);padding:10px;min-width:220px;max-width:300px;
}
.pop-inner{display:flex;flex-direction:column;gap:9px}
.pop-row{display:flex;align-items:center;gap:4px;flex-wrap:wrap}
.pop-title{font-size:11px;font-weight:700;color:var(--muted-2);text-transform:uppercase;letter-spacing:.05em}
.pop-sep{height:1px;background:var(--border);margin:2px 0}

/* ===================== busca no mapa ===================== */
.search-box{
  display:flex;align-items:center;gap:4px;height:34px;padding:0 4px 0 9px;
  background:var(--panel-2);border:1px solid var(--border-strong);border-radius:9px;
  min-width:250px;margin-right:2px;
}
.search-box:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px rgba(79,70,229,.12)}
.search-box .sb-ico{color:var(--muted);display:inline-flex}
.search-input{
  flex:1 1 auto;min-width:60px;border:0;background:transparent;outline:none;
  font-size:13px;color:var(--text);padding:0 2px;
}
.search-input::-webkit-search-cancel-button{display:none}
.search-count{font-size:11.5px;font-weight:700;color:var(--muted);white-space:nowrap;padding:0 4px}
.icon-btn.xs{width:26px;height:26px;font-size:13px}

/* ===================== RESPONSIVE ===================== */
.only-mobile{display:none}@media (max-width:900px){
  .only-mobile{display:inline-flex}
  .sidebar{
    position:fixed;top:0;bottom:0;left:0;box-shadow:var(--shadow-lg);
  }
  .sidebar.collapsed{margin-left:calc(-1 * var(--sidebar-w))}
  .inspector{
    position:fixed;top:0;bottom:0;right:0;box-shadow:var(--shadow-lg);
  }
  .inspector.hidden{display:none !important}
  .map-title{max-width:150px}
  #toolbar{gap:4px;padding:0 8px}
  .keys{grid-template-columns:1fr}
}
@media (max-width:600px){
  .zoom-bar{left:auto;right:12px;transform:none}
  #map-title{display:none}
}

/* ===================== TEMA ESCURO (ajustes pontuais) ===================== */
body.theme-dark .map-item.active{border-color:#2c3663}
body.theme-dark .icon-btn.active{border-color:#2c3663}
body.theme-dark .ctx-row .ico:hover,
body.theme-dark .ctx-row .ico.active{border-color:#2c3663}
body.theme-dark .menu button:hover{background:var(--accent-soft)}
body.theme-dark .ctx-item:hover{background:var(--accent-soft)}
body.theme-dark .ctx-item.danger:hover{background:#2a1414}
body.theme-dark .quickbar [data-act="delete"]:hover{background:#2a1414}
body.theme-dark .btn.danger{border-color:#4a2020}
body.theme-dark .btn.danger:hover{background:#2a1414}
body.theme-dark .hint{background:#e7ecf3;color:#0e1218}
body.theme-dark .hint kbd{background:rgba(0,0,0,.1);color:#0e1218}
body.theme-dark .formatbar{background:#232b39}
body.theme-dark .toast{background:#232b39}
body.theme-dark .modal{background:rgba(0,0,0,.6)}
body.theme-dark .swatch{border-color:var(--surface)}
body.theme-dark .swatch.none{
  background:linear-gradient(135deg,var(--surface) 45%,#f87171 45%,#f87171 55%,var(--surface) 55%);
}
body.theme-dark .save-status[data-state="saved"]{background:#0c2318;border-color:#14532d;color:#4ade80}
body.theme-dark .save-status[data-state="saving"]{background:#241c07;border-color:#713f12;color:#fbbf24}
body.theme-dark .map-title:focus{background:var(--surface)}

/* ===================== MODO APRESENTAÇÃO ===================== */
#app.presenting .sidebar,
#app.presenting #toolbar,
#app.presenting #inspector,
#app.presenting .zoom-bar,
#app.presenting .quickbar,
#app.presenting .hint{display:none !important}
#app.presenting #canvas-wrap{background:
  radial-gradient(circle at 1px 1px, var(--grid) 1px, transparent 0) 0 0/22px 22px,
  var(--bg);
}

.present{
  position:absolute;left:50%;bottom:20px;transform:translateX(-50%);
  display:flex;align-items:center;gap:12px;
  background:var(--panel);border:1px solid var(--border);border-radius:16px;
  box-shadow:var(--shadow-lg);padding:11px 14px;z-index:45;
  width:min(940px,94vw);
}
.present .pbtn{
  width:42px;height:42px;flex:0 0 auto;border-radius:11px;
  border:1px solid var(--border-strong);background:var(--surface);color:var(--icon);
  font-size:15px;display:inline-flex;align-items:center;justify-content:center;
}
.present .pbtn:hover{background:var(--panel-2);color:var(--text)}
.present .pbtn:disabled{opacity:.35;cursor:default}
.present .pbtn.primary{background:var(--accent);border-color:var(--accent);color:#fff}
.present .pbtn.wide{
  width:auto;padding:0 14px;font-size:12.5px;font-weight:700;gap:6px;
  white-space:nowrap;
}
.present .pbtn.wide:not(.hidden){display:inline-flex}
.present-info{flex:1 1 auto;min-width:0}
.present-crumb{
  font-size:11.5px;color:var(--muted-2);white-space:nowrap;overflow:hidden;
  text-overflow:ellipsis;margin-bottom:2px;
}
.present-title{
  font-size:16px;font-weight:700;letter-spacing:-.01em;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.present-desc{
  font-size:12.5px;color:var(--muted);margin-top:3px;line-height:1.35;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
}
.present-count{
  flex:0 0 auto;font-size:12.5px;font-weight:700;color:var(--muted);
  font-variant-numeric:tabular-nums;padding:0 2px;
}
.present-progress{
  position:absolute;left:14px;right:14px;bottom:5px;height:3px;border-radius:3px;
  background:var(--border);overflow:hidden;
}
.present-progress i{display:block;height:100%;background:var(--accent);border-radius:3px;transition:width .18s}
.present-top{
  position:absolute;top:18px;left:50%;transform:translateX(-50%);
  font-size:12px;color:var(--muted);background:var(--panel);border:1px solid var(--border);
  padding:6px 14px;border-radius:20px;box-shadow:var(--shadow-sm);z-index:44;
  white-space:nowrap;max-width:90vw;overflow:hidden;text-overflow:ellipsis;
}
@media (max-width:600px){
  .present{flex-wrap:wrap;gap:8px}
  .present-info{order:-1;flex-basis:100%}
}
