
:root{
  --bg:#0b1220; --bg-elev:#0e1628; --panel:#0b1220; --muted:#94a3b8; --text:#e5e7eb;
  --primary:#2563eb; --primary-900:#1e3a8a; --border:#1f2937; --good:#10b981; --warn:#f59e0b; --bad:#ef4444;
  --gap:12px;
}
*{box-sizing:border-box}
html,body{height:100%}
body{margin:0;font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,"Helvetica Neue",Arial;background:var(--bg);color:var(--text);
  -webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}
a{color:#93c5fd;text-decoration:none} a:hover{text-decoration:underline}
img{max-width:100%;display:block}
.wrap{max-width:1280px;margin:0 auto;padding:0 16px}
.btn{background:var(--primary);color:#fff;border:1px solid var(--primary-900);border-radius:10px;padding:10px 14px;cursor:pointer}
.btn.ghost{background:transparent;color:var(--text);border:1px solid var(--border)}
.btn.danger{background:var(--bad);border-color:#991b1b}
.btn:disabled{opacity:.6;cursor:not-allowed}
.card{background:var(--bg-elev);border:1px solid var(--border);border-radius:14px;padding:16px}
.grid{display:grid;gap:var(--gap)}
.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}
.grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}
.grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}
@media (max-width:1100px){.grid-4{grid-template-columns:repeat(2,1fr)}}
@media (max-width:780px){.grid-3,.grid-4{grid-template-columns:1fr}.grid-2{grid-template-columns:1fr}}
/* Nav */
.nav{border-bottom:1px solid var(--border);background:rgba(9,12,20,.8);backdrop-filter:blur(6px);position:sticky;top:0;z-index:50}
.nav .inner{display:flex;justify-content:space-between;align-items:center;gap:14px;padding:12px 0}
.brand{display:flex;gap:10px;align-items:center}
.brand img{width:36px;height:36px}
.brand strong{letter-spacing:.3px}
.nav .links{display:flex;gap:14px;align-items:center;flex-wrap:wrap}
/* Hero */
.hero{padding:44px 0 30px}
.hero h1{font-size:40px;margin:10px 0 6px}
.hero p{color:var(--muted);font-size:18px;margin:0 0 18px}
.hero .cta{display:flex;gap:10px;flex-wrap:wrap}
/* Footer */
.footer{border-top:1px solid var(--border);margin-top:30px;padding:18px 0;color:var(--muted)}
/* Auth */
.auth{display:grid;grid-template-columns:1.2fr 1fr;gap:20px;padding:30px 0 40px}
.auth .ill{display:grid;place-items:center}
.auth .ill .card{width:100%;min-height:260px;background:radial-gradient(1200px 400px at -10% -10%,rgba(37,99,235,.15),transparent),var(--bg-elev)}
.auth .form .card{padding:24px}
.form h2{margin:0 0 10px}
.form .row{display:grid;gap:8px;margin:10px 0}
label{font-size:14px;color:#cbd5e1}
input[type=text],input[type=password],input[type=email]{width:100%;padding:10px 12px;border:1px solid var(--border);border-radius:10px;background:#111827;color:var(--text)}
.form .actions{display:flex;gap:10px;align-items:center;justify-content:space-between;margin-top:10px}
@media (max-width:900px){.auth{grid-template-columns:1fr}.auth .ill{display:none}}
/* Devices */
.devices-head{display:flex;justify-content:space-between;align-items:center;gap:10px;margin:16px 0}
.cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--gap)}
@media (max-width:1100px){.cards{grid-template-columns:repeat(2,1fr)}}
@media (max-width:700px){.cards{grid-template-columns:1fr}}
.device-card .row{display:flex;justify-content:space-between;align-items:center;gap:8px;margin:6px 0}
.device-card code{background:#0a1222;border:1px solid var(--border);padding:4px 6px;border-radius:8px}
.device-card small{color:var(--muted)}
.device-card .actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px}
/* Builder layout - improved responsiveness */
.layout{display:grid;grid-template-columns:280px minmax(0,1fr) 340px;gap:12px;align-items:start}
.panel{background:#0b1220;border:1px solid var(--border);border-radius:12px;padding:12px;min-height:200px}
.panel h3{margin:4px 0 10px}
.canvas-wrap{min-height:60vh}
.canvas{position:relative;display:grid;grid-template-columns:repeat(12,1fr);grid-auto-rows:80px;gap:12px;border-radius:12px;min-height:60vh;overflow:auto}
.tile{position:relative;background:#0e1628;border:1px solid var(--border);border-radius:10px;overflow:hidden;user-select:none;color:#e5e7eb}
.tile .hdr{display:flex;justify-content:space-between;gap:6px;align-items:center;padding:6px 8px;border-bottom:1px solid var(--border);background:#0b1220}
.tile .hdr .handle{cursor:move;opacity:.9}
.tile .body{padding:10px;opacity:.95;height:calc(100% - 38px);display:grid;place-items:center}
.tile .sel{position:absolute;inset:0;border:2px dashed #60a5fa;border-radius:10px;pointer-events:none;display:none}
.tile.selected .sel{display:block}
.tile .resize{position:absolute;right:4px;bottom:4px;width:16px;height:16px;border-right:3px solid #94a3b8;border-bottom:3px solid #94a3b8;border-radius:2px;cursor:nwse-resize}
/* columns collapse */
@media (max-width:1200px){
  .layout{grid-template-columns:1fr}
  .panel{width:100%}
  .canvas{min-height:50vh}
}
/* Runtime dashboard centering */
.stage{display:flex;justify-content:center}
#canvas{width:min(80vw,1280px)}


/* === FIX (layout only): list left, properties below list, canvas right === */
.layout.layout--props-below{
  display: grid;
  grid-template-columns: 280px minmax(0,1fr);
  grid-template-areas:
    "left right"
    "props right";
  grid-auto-rows: auto;
  align-items: start;
}
.layout.layout--props-below #disc    { grid-area: left; }
.layout.layout--props-below #propBox { grid-area: props; }
.layout.layout--props-below #canvas  { grid-area: right; align-self: start; }
/* cancel any previous row-span on canvas */
.layout.layout--props-below #canvas { grid-row: auto !important; }

@media (max-width: 1200px){
  .layout.layout--props-below{
    grid-template-columns: 1fr;
    grid-template-areas:
      "left"
      "props"
      "right";
  }
}

