:root{
  --bg:#0b0f14; --card:#0f141a; --line:#1f2937; --text:#e5e7eb; --muted:#94a3b8;
  --accent:#38bdf8; --accent-weak:#1f3b4a; --chip:#0b1620;
  --header-height:120px; --tabs-height:48px;
  --header-offset:var(--header-height);
}
*{box-sizing:border-box}
html,body{height:100%}
body{
  margin:0; background:var(--bg); color:var(--text);
  font-family:system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;
}
.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}
.wrap{max-width:1280px;margin:0 auto;padding:0 16px}

/* CABECERA GLOBAL */
.header{
  position:sticky; top:0; z-index:60;
  background:var(--card); border-bottom:1px solid var(--line);
  transition:transform .25s ease;
}
.header-layout{
  display:flex; flex-direction:column; gap:8px; padding:8px 0 16px;
}
.header-row{
  display:flex; flex-wrap:wrap; align-items:flex-start; justify-content:space-between; gap:16px;
}
.header-left,
.header-right{
  display:flex; align-items:center;
}
.header-left{ gap:12px; flex:1 1 auto; justify-content:flex-start; }
.header-right{ gap:12px; flex:1 1 auto; justify-content:flex-end; }
.header-frame{
  display:flex; align-items:center; gap:12px;
  padding:10px 12px; border:1px solid transparent; border-radius:12px;
  background:transparent;
}
.header-title{font-weight:700; letter-spacing:.3px; font-size:20px; margin:0; text-align:center; align-self:center;}

.badge{
  display:inline-flex; align-items:center; gap:6px;
  padding:4px 10px; border-radius:9999px;
  background:var(--chip); border:1px solid var(--line); font-size:12px; color:var(--text);
}

/* HAMBURGUER */
.icon-btn{
  display:inline-flex; align-items:center; justify-content:center;
  width:38px; height:38px; border-radius:10px; background:transparent;
  border:1px solid var(--line); color:var(--text); cursor:pointer;
}

/* LAYOUT */
.layout{position:relative; min-height:calc(100vh - var(--header-height));}
/* SIDEBAR */
body{ --sidebar-width:260px; }
body.sidebar-visible{ overflow:hidden; }
.sidebar{
  position:fixed; top:var(--header-height); left:0; bottom:0;
  width:var(--sidebar-width); background:var(--card); border-right:1px solid var(--line);
  box-shadow:12px 0 32px rgba(11, 15, 20, .6);
  transform:translateX(calc(-100% - 24px));
  opacity:0; pointer-events:none;
  transition:transform .35s ease, opacity .3s ease;
  z-index:70; overflow:hidden;
}
.sidebar.open{
  transform:translateX(0);
  opacity:1;
  pointer-events:auto;
}
.sidebar .nav{ opacity:0; transform:translateX(-16px); transition:opacity .25s ease, transform .35s ease; }
.sidebar.open .nav{ opacity:1; transform:translateX(0); }
.nav{display:flex; flex-direction:column; gap:8px; padding:8px 8px 16px}
.nav .btn{
  display:flex; align-items:center; gap:10px; padding:10px 12px; border-radius:12px;
  background:transparent; border:1px solid var(--line); color:var(--text); text-align:left; cursor:pointer;
}
.nav .btn:hover{background:#0c1620}
.nav .btn svg{opacity:.85}

/* MOBILE SIDEBAR (off-canvas) */
.backdrop{ position:fixed; inset:var(--header-height) 0 0 0; background:#0006; display:none; z-index:60; }
.backdrop.show{ display:block; }
body.header-collapsed .sidebar{ top:0; }
body.header-collapsed .backdrop{ inset:0 0 0 0; }

/* MAIN */
main{flex:1}
.main{padding:16px 0 48px}

/* PESTAÑAS (contratos abiertos) */
.tabs-panel{
  position:sticky; top:var(--header-offset); z-index:45;
  background:var(--bg); padding:12px 0 4px;
}
.tabs{ display:flex; gap:8px }
.tab{
  display:flex; align-items:center; gap:8px;
  padding:8px 12px; border:1px solid var(--line); border-radius:12px; background:#0b1117; color:var(--text); font-size:13px;
}
.tab .mark{font-size:12px; color:var(--muted)}
.tab.active{ outline:1px solid var(--accent-weak); background:#0c1620 }
.tab .close{ opacity:.6; cursor:not-allowed }

/* CABECERA DEL LIENZO (por contrato) */
.canvas-head{
  display:flex; flex-wrap:wrap; align-items:center; gap:12px;
  border:1px solid var(--line); border-radius:12px; background:var(--card); padding:12px 14px; margin:8px 0 12px;
}
.sticky-canvas{
  position:sticky; top:calc(var(--header-offset) + var(--tabs-height));
  z-index:40;
}
body.header-collapsed{
  --header-offset:0px;
}
body.header-collapsed .header{
  transform:translateY(calc(-1 * var(--header-height)));
  pointer-events:none;
}
.canvas-meta{ display:flex; flex-wrap:wrap; align-items:center; gap:12px }
.canvas-title{ font-weight:600 }
.canvas-sub{ color:var(--muted); font-size:13px }
.chip{ padding:4px 8px; border-radius:9999px; background:#0c1620; border:1px solid var(--line); font-size:12px }

.canvas-right{
  margin-left:auto;
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  justify-content:flex-end;
  gap:12px;
}
.canvas-user-frame{
  display:flex;
  flex-direction:column;
  align-items:flex-end;
  gap:4px;
  padding:10px 12px;
  border:1px solid transparent;
  border-radius:10px;
  background:transparent;
  min-width:140px;
}
.canvas-user-frame .user-name{ font-weight:600; font-size:14px; color:var(--text); }
.canvas-user-frame .user-role{ font-size:12px; color:var(--muted); }
.canvas-actions{ display:flex; align-items:center; gap:8px }
.icon-button{
  width:36px; height:36px; border-radius:10px; border:1px solid var(--line);
  background:#0b1117; color:var(--text); display:inline-flex; align-items:center; justify-content:center;
  cursor:pointer; transition:background .2s ease, border-color .2s ease;
}
.icon-button:hover,
.icon-button:focus-visible{
  background:#0c1620; border-color:var(--accent-weak); outline:none;
}
.icon-button svg{ transition:transform .2s ease; }
.icon-button[data-state="collapsed"] svg{ transform:rotate(180deg); }

/* COLAPSABLES */
.details{
  background:var(--card); border:1px solid var(--line); border-radius:12px; margin:12px 0;
}
.details > summary{
  cursor:pointer; padding:14px 16px; font-weight:600; list-style:none; outline:none;
  display:flex; align-items:center; gap:8px;
}
.details[open] > summary{border-bottom:1px solid var(--line)}
.details > summary::after{
  content:'▾'; margin-left:auto; font-size:12px; transition:transform .2s ease; display:inline-block;
}
.details[open] > summary::after{ transform:rotate(180deg); }
.details:not([open]) > .content{ display:none }

.content{padding:16px}
.final-actions{ display:flex; flex-direction:column; gap:8px; align-items:center }

/* LECTURA */
.dropzone{
  border:2px dashed var(--line); border-radius:12px; padding:20px; text-align:center; background:#0b1117; color:var(--muted);
  cursor:pointer; position:relative; outline:none;
}
.dropzone:focus-visible{ border-color:var(--accent); box-shadow:0 0 0 2px rgba(56, 189, 248, 0.35); }
.dropzone input[type="file"]{ position:absolute; inset:0; opacity:0; pointer-events:none; }
.row{display:flex; gap:16px; align-items:flex-start; flex-wrap:wrap}
.col{flex:1 1 280px}
.textbox{
  width:100%; min-height:120px; border:1px solid var(--line); border-radius:12px; padding:12px; background:#0b1117; color:var(--text);
}
.muted{color:var(--muted); font-size:13px}

/* Chat estilo WhatsApp (placeholder) */
.chat{ border:1px solid var(--line); border-radius:12px; background:#0b1117; padding:10px; min-height:160px }
.bubble{ max-width:80%; margin:6px 0; padding:8px 12px; border-radius:16px; line-height:1.35; font-size:14px }
.ai{ background:#0e1a22; border:1px solid #152635 }
.me{ background:#102a43; border:1px solid #1b3a52; margin-left:auto }
.inputline{ display:flex; gap:8px; margin-top:8px }
.inputline input{
  flex:1; border:1px solid var(--line); border-radius:9999px; padding:12px 14px; background:#0b1117; color:var(--text)
}
.send{
  width:42px; height:42px; border-radius:9999px; border:1px solid var(--line); background:#0b1117; color:var(--text);
  display:inline-flex; align-items:center; justify-content:center; cursor:not-allowed; opacity:.6
}


/* MENÚ FLOTANTE */
.float-menu{
  position:fixed; right:24px; bottom:24px;
  display:flex; flex-direction:column; gap:10px;
  z-index:90;
  cursor:grab; touch-action:none; user-select:none;
}
.float-menu.dragging{cursor:grabbing}
.float-menu .drag-handle{
width:54px; height:6px; border-radius:9999px;
background:linear-gradient(90deg, #f97316 0%, #fb7185 100%);
box-shadow:0 0 0 2px rgba(251, 113, 133, .35);
opacity:.95; align-self:center;
}
.float-menu .fbtn{
  display:flex; align-items:center; gap:10px;
  padding:10px 14px; border-radius:14px; border:1px solid transparent;
  background:#7aa2f7; color:#0b1020; font-size:14px; min-width:160px;
  cursor:pointer;
}
.float-menu .fbtn svg{opacity:.9}
.float-menu .fbtn[disabled]{opacity:1; cursor:not-allowed}
.float-menu .fbtn--guardar{background:#7aa2f7; color:#0b1020}
.float-menu .fbtn--crear{background:#a78bfa}
.float-menu .fbtn--creado{background:#34d399}
.float-menu .fbtn--al-cliente{background:#fbbf24}
.float-menu .fbtn--al-balcon{background:#f97316}
.float-menu .fbtn--creado,
.float-menu .fbtn--al-cliente,
.float-menu .fbtn--al-balcon{color:#0b1020}
.float-menu .label{white-space:nowrap}

@media (max-width: 768px){
  .float-menu{ right:16px; bottom:16px; gap:12px }
  .float-menu .fbtn{ min-width:48px; padding:12px; justify-content:center }
  .float-menu .label{ display:none }
  .float-menu .drag-handle{ width:40px; margin-bottom:4px }
}
