/* ─── DealerDMS — Website builder (website.js) ────────────────────────────────
   Styles for the two-pane page builder, the add-from-template picker, the
   WordPress-like Content editor, and the Theme designer. Reads ONLY the app
   theme tokens (--primary, --surface, --border, --text …) so it stays native to
   DealerDMS's light shell + steel-blue primary and every theme applies
   automatically. Scoped under `.portal` (the module root class). */

/* ── Website-area top toggle: Builder | Theme ─────────────────────────────── */
.ws-toggle{display:inline-flex;background:var(--surface-2);border:1px solid var(--border);border-radius:999px;padding:3px;gap:2px}
.ws-toggle button{border:none;background:transparent;color:var(--text-muted);font-size:13px;font-weight:700;padding:6px 16px;border-radius:999px;cursor:pointer;transition:.12s}
.ws-toggle button.active{background:var(--surface);color:var(--primary);box-shadow:var(--shadow)}

.prt-site-url{display:flex;align-items:center;gap:10px;flex-wrap:wrap;color:var(--text-muted);font-size:13px;margin-top:4px}
.prt-site-url code{background:var(--surface-2);padding:2px 8px;border-radius:6px;color:var(--text);font-size:12.5px}

/* ═══ THE BUILDER: page rail + two-pane workspace ═════════════════════════════ */
/* Full-height layout: the website module fills .view so the builder can reach the
   viewport bottom. .view is the scroll container (flex:1) — make the module a
   flex column that consumes it, and let the builder grow to fill the leftover. */
.portal.ws-fill{display:flex;flex-direction:column;height:100%;min-height:0}
.portal.ws-fill > #ws-section{flex:1;min-height:0;display:flex;flex-direction:column}
.ws-builder{display:grid;grid-template-columns:236px 1fr;gap:16px;align-items:stretch;
  flex:1;min-height:0}
@media (max-width:900px){.ws-builder{grid-template-columns:1fr;flex:none}}

/* left rail — the site's pages (full-height flex: list scrolls, footer pinned) */
.ws-rail{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden;display:flex;flex-direction:column;min-height:0}
.ws-rail-h{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:12px 14px;border-bottom:1px solid var(--border);flex-shrink:0}
.ws-rail-h span{font-size:12px;font-weight:800;letter-spacing:.05em;text-transform:uppercase;color:var(--text-muted)}
.ws-rail-list{display:flex;flex-direction:column;padding:6px;flex:1;min-height:0;overflow-y:auto}
.ws-page-item{display:flex;align-items:center;gap:8px;padding:9px 10px;border-radius:8px;cursor:pointer;color:var(--text);font-size:13.5px;border:1px solid transparent;transition:.1s;text-align:left;background:transparent;width:100%}
.ws-page-item:hover{background:var(--surface-hover)}
.ws-page-item.active{background:color-mix(in srgb,var(--primary) 12%,transparent);border-color:color-mix(in srgb,var(--primary) 32%,transparent);color:var(--primary-d,var(--primary));font-weight:700}
.ws-page-item .ws-page-title{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ws-page-item .ws-dot{width:7px;height:7px;border-radius:50%;flex:0 0 auto;background:var(--text-muted);opacity:.45}
.ws-page-item .ws-dot.pub{background:var(--good);opacity:1}
.ws-rail-foot{padding:8px;border-top:1px solid var(--border);display:flex;flex-direction:column;gap:6px;flex-shrink:0}
.ws-rail-add{width:100%;justify-content:center}
.ws-rail-links{display:flex;flex-direction:column;gap:2px;padding:2px 4px 4px}
.ws-rail-links a{font-size:12.5px;color:var(--text-muted);text-decoration:none;padding:4px 6px;border-radius:6px}
.ws-rail-links a:hover{color:var(--primary);background:var(--surface-hover)}

/* the two-pane workspace */
.ws-workspace{display:grid;grid-template-columns:minmax(320px,42%) 1fr;gap:0;align-items:stretch;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden;min-height:0;height:100%}
@media (max-width:1100px){.ws-workspace{grid-template-columns:1fr;height:auto;min-height:560px}}
.ws-noselect{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow)}

/* ── LEFT: chat pane ── */
.ws-chat{display:flex;flex-direction:column;border-right:1px solid var(--border);min-height:0;background:var(--surface-3)}
@media (max-width:1100px){.ws-chat{border-right:none;border-bottom:1px solid var(--border)}}
.ws-chat-head{padding:12px 16px;border-bottom:1px solid var(--border);background:var(--surface);display:flex;align-items:flex-start;justify-content:space-between;gap:10px}
.ws-chat-head h3{margin:0;font-size:15px;font-weight:800;color:var(--text)}
.ws-chat-head .ws-slug{font-size:11.5px;color:var(--text-muted);font-family:ui-monospace,monospace;margin-top:2px}
.ws-chat-head-actions{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.ws-verrow{display:flex;align-items:center;gap:8px;padding:7px 16px;border-bottom:1px solid var(--border);background:var(--surface)}
.ws-verrow label{font-size:11px;color:var(--text-muted);white-space:nowrap;font-weight:600}
.ws-verrow select{flex:1;font-size:11.5px;padding:4px 8px;border:1px solid var(--border);border-radius:6px;background:var(--surface);color:var(--text)}

.ws-messages{flex:1;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:10px;min-height:220px}
.ws-msg{padding:9px 13px;border-radius:12px;max-width:92%;font-size:13px;line-height:1.5;white-space:pre-wrap;word-wrap:break-word}
.ws-msg.user{background:var(--primary);color:var(--on-primary);align-self:flex-end;border-bottom-right-radius:4px}
.ws-msg.assistant{background:var(--surface);border:1px solid var(--border);color:var(--text);align-self:flex-start;border-bottom-left-radius:4px}
.ws-msg.assistant.err{border-color:var(--danger);color:var(--danger)}
.ws-msg-hint{color:var(--text-muted);font-size:12.5px;text-align:center;padding:24px 12px;line-height:1.55}
.ws-toolstatus{font-size:11px;color:var(--text-muted);padding:0 16px 4px;font-family:ui-monospace,monospace;min-height:14px}

.ws-chat-input{padding:12px 16px;border-top:1px solid var(--border);background:var(--surface);flex-shrink:0}
.ws-chat-input textarea{width:100%;min-height:70px;resize:vertical;border:1px solid var(--border);border-radius:10px;padding:10px 12px;font-size:13.5px;font-family:inherit;background:var(--surface);color:var(--text)}
.ws-chat-input textarea:focus{outline:none;border-color:var(--primary)}
.ws-chat-input-row{display:flex;gap:8px;margin-top:8px;align-items:center;flex-wrap:wrap}
.ws-chat-status{flex:1;text-align:right;font-size:11.5px;color:var(--text-muted)}

/* ── RIGHT: preview / code tabs ── */
.ws-preview{display:flex;flex-direction:column;min-width:0;min-height:0;background:var(--surface)}
.ws-ptabs{display:flex;gap:0;border-bottom:1px solid var(--border);flex-shrink:0;overflow-x:auto}
.ws-ptab{padding:11px 16px;font-size:12.5px;font-weight:700;color:var(--text-muted);cursor:pointer;border:none;background:transparent;border-bottom:2px solid transparent;white-space:nowrap}
.ws-ptab.active{color:var(--primary);border-bottom-color:var(--primary)}
.ws-ptab .ws-dirty{color:var(--warn);font-weight:900;margin-left:3px}

.ws-panel{display:none;flex:1;min-height:0;flex-direction:column}
.ws-panel.active{display:flex}

/* preview device toolbar + iframe */
.ws-devbar{display:flex;gap:6px;padding:7px 12px;border-bottom:1px solid var(--border);background:var(--surface-3);align-items:center}
.ws-devbar .ws-url{flex:1;font-size:11px;color:var(--text-muted);font-family:ui-monospace,monospace;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ws-iconbtn{border:1px solid var(--border);background:var(--surface);color:var(--text-muted);border-radius:7px;padding:5px 9px;font-size:13px;cursor:pointer;line-height:1}
.ws-iconbtn:hover{color:var(--text)}
.ws-iconbtn.active{background:var(--primary);border-color:var(--primary);color:var(--on-primary)}
.ws-frame-wrap{flex:1;min-height:0;overflow:auto;display:flex;justify-content:center;background:var(--surface-2);padding:0}
.ws-frame-wrap.padded{padding:18px}
.ws-frame{width:100%;height:100%;border:none;background:#fff;transition:width .25s,height .25s}

/* code editors (CodeMirror mounted into .ws-code-host) */
.ws-code-panel{padding:12px 14px;gap:10px;flex-direction:column}
.ws-code-label{font-size:12px;font-weight:700;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em}
.ws-code-host{flex:1;min-height:0;overflow:hidden;border:1px solid var(--border);border-radius:8px}
.ws-code-host .cm-editor{height:100%}
.ws-code-host .cm-editor.cm-focused{outline:none}
.ws-code-host .cm-scroller{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12.5px}
.ws-panel-actions{display:flex;gap:8px;align-items:center;flex-shrink:0}

/* versions list */
.ws-versions{padding:14px;overflow-y:auto}
.ws-vrow{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;border:1px solid var(--border);border-radius:8px;margin-bottom:8px;background:var(--surface)}
.ws-vrow-title{font-weight:700;font-size:13px;color:var(--text)}
.ws-vrow-meta{font-size:11.5px;color:var(--text-muted);margin-top:2px}

/* ═══ CONTENT tab (WordPress-like no-code editing) ═══════════════════════════ */
.ws-content{padding:16px;overflow-y:auto}
.ws-content .ws-content-lead{font-size:13px;color:var(--text-muted);margin:0 0 16px;line-height:1.5}
/* grouped sections (WordPress-like theme-options form) */
.ws-csection{margin-bottom:18px}
.ws-csection-h{font-size:13px;font-weight:800;color:var(--text);padding:6px 2px 8px;margin-bottom:8px;border-bottom:2px solid var(--primary);display:inline-block}
.ws-cblock-note{font-weight:500;text-transform:none;letter-spacing:0;color:var(--text-muted);opacity:.8}
.ws-cblock{border:1px solid var(--border);border-radius:10px;padding:14px;margin-bottom:12px;background:var(--surface)}
.ws-cblock-label{font-size:11px;font-weight:800;letter-spacing:.05em;text-transform:uppercase;color:var(--text-muted);margin-bottom:8px}
.ws-cblock textarea,.ws-cblock input[type=text]{width:100%;border:1px solid var(--border);border-radius:8px;padding:9px 11px;font-size:13.5px;font-family:inherit;background:var(--surface);color:var(--text);resize:vertical}
.ws-cblock textarea:focus,.ws-cblock input:focus{outline:none;border-color:var(--primary)}
.ws-cimg{display:flex;gap:14px;align-items:flex-start;flex-wrap:wrap}
.ws-cimg-preview{width:150px;height:100px;border-radius:8px;border:1px solid var(--border);background:var(--surface-3) center/cover no-repeat;display:flex;align-items:center;justify-content:center;color:var(--text-muted);font-size:22px;flex:0 0 auto}
.ws-cimg-controls{flex:1;min-width:180px;display:flex;flex-direction:column;gap:8px}
.ws-cimg-controls .ws-cimg-src{font-size:11px;color:var(--text-muted);font-family:ui-monospace,monospace;word-break:break-all}
.ws-content-empty{color:var(--text-muted);font-size:13.5px;background:var(--surface-3);border:1px dashed var(--border);border-radius:10px;padding:22px;text-align:center}
.ws-content-foot{display:flex;gap:8px;align-items:center;margin-top:6px}

/* ═══ ADD-PAGE TEMPLATE PICKER (modal) ═══════════════════════════════════════ */
.ws-modal-ov{position:fixed;inset:0;background:rgba(15,25,40,.5);display:flex;align-items:center;justify-content:center;z-index:1000;padding:20px}
.ws-modal{background:var(--surface);border:1px solid var(--border);border-radius:14px;box-shadow:var(--shadow-lg);width:760px;max-width:96vw;max-height:90vh;display:flex;flex-direction:column;overflow:hidden}
.ws-modal-h{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--border)}
.ws-modal-h h3{margin:0;font-size:17px;font-weight:800;color:var(--text)}
.ws-modal-x{border:none;background:transparent;font-size:22px;line-height:1;color:var(--text-muted);cursor:pointer;padding:2px 6px}
.ws-modal-x:hover{color:var(--text)}
.ws-modal-body{padding:18px 20px;overflow-y:auto}
.ws-tpl-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:12px}
.ws-tpl-card{text-align:left;background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:14px;cursor:pointer;transition:.12s;display:flex;flex-direction:column;gap:6px}
.ws-tpl-card:hover{border-color:var(--primary);transform:translateY(-1px);box-shadow:var(--shadow)}
.ws-tpl-ico{font-size:26px;line-height:1}
.ws-tpl-name{font-weight:800;font-size:14px;color:var(--text)}
.ws-tpl-desc{font-size:12px;color:var(--text-muted);line-height:1.45}

/* ═══ THEME DESIGNER ═════════════════════════════════════════════════════════ */
.ws-theme-grid{display:grid;grid-template-columns:minmax(0,1fr) 380px;gap:18px;align-items:start}
@media (max-width:980px){.ws-theme-grid{grid-template-columns:1fr}}
.ws-theme-section{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:18px;margin-bottom:16px}
.ws-theme-section h3{font-size:15px;font-weight:800;color:var(--text);margin:0 0 14px;padding-bottom:10px;border-bottom:1px solid var(--border)}
.ws-color-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:10px}
.ws-color-row{display:flex;align-items:center;gap:8px;padding:8px;border:1px solid var(--border);border-radius:8px;background:var(--surface-3)}
.ws-color-row input[type=color]{width:36px;height:36px;padding:0;border:1px solid var(--border);border-radius:6px;cursor:pointer;background:transparent;flex:0 0 auto}
.ws-color-row .ws-color-label{flex:1;min-width:0;font-size:12px;font-weight:600;color:var(--text)}
.ws-color-row .ws-color-label small{display:block;color:var(--text-muted);font-weight:400;font-family:ui-monospace,monospace;font-size:10.5px}
.ws-color-row input[type=text]{width:80px;font-family:ui-monospace,monospace;font-size:11.5px;padding:6px;border:1px solid var(--border);border-radius:6px;background:var(--surface);color:var(--text);flex:0 0 auto}
.ws-font-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
@media (max-width:560px){.ws-font-grid{grid-template-columns:1fr}}
.ws-fld{display:flex;flex-direction:column;gap:5px}
.ws-fld > span{font-size:12px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.03em}
.ws-fld select,.ws-fld input,.ws-fld textarea{border:1px solid var(--border);border-radius:8px;padding:8px 10px;font-size:13.5px;font-family:inherit;background:var(--surface);color:var(--text)}
.ws-fld select:focus,.ws-fld input:focus,.ws-fld textarea:focus{outline:none;border-color:var(--primary)}
.ws-slider-row{display:grid;grid-template-columns:120px 1fr 54px;gap:10px;align-items:center;font-size:13px;color:var(--text)}
.ws-slider-row input[type=range]{width:100%}
.ws-theme-css{width:100%;min-height:130px;font-family:ui-monospace,monospace;font-size:12.5px}
.ws-theme-foot{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-top:8px}
.ws-theme-status{font-size:12.5px;color:var(--text-muted)}
.ws-theme-status.ok{color:var(--good)}
.ws-theme-status.err{color:var(--danger)}

/* live theme preview rail */
.ws-theme-rail{position:sticky;top:8px}
.ws-theme-preview-frame{border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;background:#fff;height:520px}
.ws-theme-preview-frame iframe{width:100%;height:100%;border:none;background:#fff}
.ws-theme-swatches{display:flex;gap:5px;flex-wrap:wrap;margin-top:12px}
.ws-theme-swatches span{width:26px;height:26px;border-radius:5px;border:1px solid var(--border)}
