:root {
  --ink: #111827;
  --ink-soft: #344054;
  --muted: #667085;
  --line: #e4e8ef;
  --line-strong: #cbd5e1;
  --surface: #ffffff;
  --canvas: #f4f6f9;
  --blue: #2563eb;
  --blue-dark: #1d4ed8;
  --amber: #d97706;
  --teal: #0f766e;
  --violet: #7c3aed;
  --shadow: 0 18px 45px rgba(15, 23, 42, .09);
  font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  color: var(--ink);
  background: var(--canvas);
  font-synthesis: none;
}

* { box-sizing: border-box; }
body:not(.app-view) > .topbar, body:not(.app-view) > .steps, body:not(.app-view) > .app-shell { display: none; }
html, body { min-height: 100%; margin: 0; }
body { background: var(--canvas); font-size: 15px; }
button, input, select { font: inherit; }
button { cursor: pointer; }
.marketing-home { min-height: 100vh; padding: 24px clamp(20px, 5vw, 82px) 28px; color: #f8fafc; background: radial-gradient(circle at 78% 18%, #214b91 0, transparent 33%), linear-gradient(135deg, #0b1426 0%, #111f38 62%, #102a4e 100%); }
.marketing-nav, .marketing-footer { display: flex; align-items: center; justify-content: space-between; gap: 20px; max-width: 1220px; margin: 0 auto; }
.marketing-brand { display: flex; align-items: center; gap: 11px; }.marketing-brand > span:last-child { display: grid; gap: 2px; }.marketing-brand strong { font-size: 17px; }.marketing-brand small { color: #91a7c8; font-size: 11px; }
.marketing-login { padding: 9px 15px; border: 1px solid #526887; border-radius: 8px; color: #e4edf9; background: transparent; font-weight: 700; }.marketing-login:hover { background: #203758; }
.marketing-hero { display: grid; grid-template-columns: minmax(0, .9fr) minmax(400px, 1fr); align-items: center; gap: clamp(34px, 7vw, 100px); max-width: 1220px; min-height: 550px; margin: 0 auto; }.marketing-copy { max-width: 610px; }.marketing-copy .eyebrow { color: #8bb6ff; }.marketing-copy h1 { max-width: 650px; margin: 14px 0 18px; color: #fff; font-size: clamp(40px, 5.5vw, 72px); line-height: .99; letter-spacing: -.065em; }.marketing-copy > p { max-width: 550px; margin: 0; color: #b7c6db; font-size: 18px; line-height: 1.55; }.marketing-actions { display: flex; flex-wrap: wrap; gap: 11px; margin-top: 28px; }.marketing-secondary { border-color: #587092; color: #e6eefc; background: transparent; }.marketing-secondary:hover { background: #203758; }.marketing-trust { display: flex; flex-wrap: wrap; gap: 13px 20px; margin-top: 25px; color: #93a8c4; font-size: 12px; }
.marketing-preview { position: relative; overflow: hidden; padding: 0; border: 1px solid #355174; border-radius: 18px; background: #f7faff; box-shadow: 0 30px 90px #02091480; transform: rotate(1.4deg); }.preview-top { display: flex; align-items: center; gap: 6px; padding: 14px 17px; color: #677b98; background: #fff; border-bottom: 1px solid #dbe4f0; }.preview-top small { margin-left: 9px; font-weight: 700; }.preview-dot { width: 8px; height: 8px; border-radius: 50%; background: #d2dcea; }.preview-plan { position: relative; height: 330px; margin: 16px; overflow: hidden; border: 1px solid #d8e2ef; background: repeating-linear-gradient(0deg, transparent 0 25px, #e7eef7 26px), repeating-linear-gradient(90deg, transparent 0 25px, #e7eef7 26px), #f8fbff; }.preview-room { position: absolute; display: grid; place-content: center; justify-items: center; border: 2px solid #7aa4e8; color: #214f9d; background: #dfeafecc; }.preview-room b { display: grid; place-items: center; width: 31px; height: 31px; border: 2px solid #2563eb; border-radius: 50%; background: #fff; }.preview-room span { margin-top: 9px; font-weight: 800; }.preview-room small { margin-top: 3px; color: #5d769b; }.room-a { inset: 34px 48% 52px 32px; }.room-b { inset: 80px 30px 52px 53%; background: #e8f7f4cc; border-color: #51a99b; color: #176f67; }.wall-one, .wall-two { position: absolute; display: block; background: #244a7a; }.wall-one { top: 50%; left: 32px; right: 30px; height: 5px; }.wall-two { top: 34px; bottom: 52px; left: 52%; width: 5px; }.preview-measure { position: absolute; padding: 4px 8px; border-radius: 5px; color: #2c5b9c; background: #fff; font-size: 11px; font-weight: 800; box-shadow: 0 2px 7px #294b7618; }.measure-one { top: 16px; left: 32%; }.measure-two { left: 18px; top: 46%; transform: rotate(-90deg); }.preview-footer { display: flex; justify-content: space-between; padding: 13px 17px; color: #63809e; background: #fff; font-size: 12px; }.preview-footer strong { color: #16734a; }
.marketing-features { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; max-width: 1220px; margin: 10px auto 70px; }.marketing-features article { padding: 21px; border: 1px solid #2b4466; border-radius: 13px; background: #14284499; }.marketing-features article > span { color: #78a8f8; font-size: 12px; font-weight: 800; }.marketing-features h2 { margin: 11px 0 7px; color: #fff; font-size: 17px; }.marketing-features p, .marketing-bottom p { margin: 0; color: #aabbd2; font-size: 14px; line-height: 1.5; }.marketing-bottom { display: flex; align-items: center; justify-content: space-between; gap: 30px; max-width: 1220px; margin: 0 auto 48px; padding: 30px 0; border-top: 1px solid #2a4364; border-bottom: 1px solid #2a4364; }.marketing-bottom h2 { margin: 8px 0; color: #fff; font-size: 28px; letter-spacing: -.03em; }.marketing-plans { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 8px; max-width: 390px; }.marketing-plans span { padding: 9px 12px; border: 1px solid #3c5a80; border-radius: 999px; color: #bbd0ec; background: #142844; font-size: 12px; }.marketing-footer { color: #7890b2; font-size: 12px; }.marketing-footer button { border: 0; color: #a9c8f9; background: transparent; font-weight: 700; }.marketing-home[hidden] { display: none; }

.topbar {
  min-height: 78px;
  padding: 14px 24px;
  display: flex;
  align-items: center;
  gap: 28px;
  color: #f8fafc;
  background: var(--ink);
}
.brand { display: flex; align-items: center; gap: 11px; min-width: 245px; }
.brand-mark, .dialog-logo {
  display: grid; place-items: center; width: 40px; height: 40px; border-radius: 12px;
  color: #fff; background: linear-gradient(145deg, #3b82f6, #1d4ed8);
  font-size: 14px; font-weight: 800; letter-spacing: -.05em;
  box-shadow: 0 7px 18px rgba(37, 99, 235, .32);
}
.brand-copy { display: grid; gap: 1px; }
.brand-copy strong { font-size: 17px; letter-spacing: -.02em; }
.brand-copy small { color: #aab5c7; font-size: 12px; }
.prototype-badge { margin-left: 5px; padding: 4px 8px; border: 1px solid rgba(148, 163, 184, .3); border-radius: 999px; color: #b8c2d1; font-size: 11px; }
.project-context { display: grid; gap: 2px; flex: 1; }
.project-context strong { font-size: 17px; font-weight: 650; }
.project-context > span:last-child { color: #9ca9bd; font-size: 12px; }
.eyebrow { display: block; color: #7b8798; font-size: 10px; font-weight: 800; letter-spacing: .12em; line-height: 1.3; text-transform: uppercase; }
.topbar .eyebrow { color: #7f8da3; }
.top-actions { display: flex; align-items: center; gap: 10px; }
.quick-visit-button { color: #dbeafe; background: #1d4ed8; border-color: #3b82f6; white-space: nowrap; }
.quick-visit-button:hover { background: #2563eb; }
.save-indicator { display: inline-flex; align-items: center; gap: 5px; color: #9fb0c8; font-size: 10px; white-space: nowrap; }
.save-indicator i { width: 7px; height: 7px; border-radius: 50%; background: #41c788; box-shadow: 0 0 0 3px rgba(65,199,136,.12); }
.save-indicator.save-error { color: #f7bd8c; }
.save-indicator.save-error i { background: #f59e0b; }
.company-control { display: grid; gap: 3px; min-width: 190px; }
.company-control span { color: #94a3b8; font-size: 10px; text-transform: uppercase; letter-spacing: .08em; }
.company-control select { width: 100%; padding: 7px 28px 7px 9px; border: 1px solid #334155; border-radius: 8px; color: #f8fafc; background: #1e293b; font-size: 12px; outline: none; }
.button { border: 1px solid transparent; border-radius: 9px; padding: 10px 14px; font-weight: 700; transition: .18s ease; }
.button:hover { transform: translateY(-1px); }
.button.primary { color: #fff; background: var(--blue); box-shadow: 0 8px 18px rgba(37, 99, 235, .22); }
.button.primary:hover { background: var(--blue-dark); }
.button.ghost { color: #d9e1ec; background: transparent; border-color: #3a4658; }
.button.ghost:hover { border-color: #637187; background: #1e293b; }
.button.full { width: 100%; }

.steps { height: 52px; display: flex; align-items: center; gap: 4px; padding: 0 24px; border-bottom: 1px solid var(--line); background: var(--surface); }
.step { height: 100%; padding: 0 18px; border: 0; border-bottom: 3px solid transparent; color: #8290a3; background: transparent; font-size: 13px; font-weight: 700; }
.step span { display: inline-grid; place-items: center; width: 22px; height: 22px; margin-right: 7px; border-radius: 50%; color: #7a8798; background: #edf1f6; font-size: 11px; }
.step.active { border-bottom-color: var(--blue); color: var(--ink); }
.step.active span { color: #fff; background: var(--blue); }

.app-shell { --quote-panel-width: 348px; display: grid; grid-template-columns: 252px minmax(420px, 1fr) 10px var(--quote-panel-width); min-height: calc(100vh - 130px); }
.panel { background: var(--surface); }
.left-panel { padding: 24px 16px 18px; border-right: 1px solid var(--line); }
.right-panel { padding: 23px 18px; border-left: 1px solid var(--line); }
.quote-resize-handle { position: relative; z-index: 20; display: grid; place-items: center; width: 10px; color: #52647f; background: #e9eef6; cursor: col-resize; touch-action: none; user-select: none; }
.quote-resize-handle::before { content: ''; position: absolute; inset: 0 -7px; }
.quote-resize-handle span { position: sticky; top: 50vh; display: grid; width: 20px; height: 42px; place-items: center; border: 1px solid #b9c7da; border-radius: 7px; background: white; box-shadow: 0 2px 8px #0f172a24; font-size: 20px; }
.quote-resize-handle:hover span, .quote-resize-handle:focus-visible span, .quote-resize-handle.dragging span { color: white; border-color: var(--blue); background: var(--blue); }
.panel-heading, .summary-head, .quote-headline { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; }
.panel-heading h1, .panel-heading h2, .summary-head h2 { margin: 3px 0 0; letter-spacing: -.03em; }
.panel-heading h1 { font-size: 20px; }
.panel-heading h2 { font-size: 16px; }
.panel-heading.compact { margin-bottom: 13px; }
.panel-count { display: grid; place-items: center; width: 27px; height: 27px; border-radius: 8px; color: var(--blue); background: #eef4ff; font-size: 12px; font-weight: 800; }
.panel-help { margin: 9px 0 17px; color: var(--muted); font-size: 13px; line-height: 1.45; }
.quick-actions-card { margin: 0 0 12px; padding: 11px 12px; border: 1px solid #e6c987; border-radius: 10px; background: #fffaf0; color: #72500b; }
.quick-actions-card.is-ready { border-color: #bce1ce; background: #f2fbf6; color: #16734a; }
.quick-actions-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.quick-actions-head strong { display: block; margin-top: 3px; font-size: 13px; }
.quick-actions-card ul { margin: 7px 0 0 17px; padding: 0; font-size: 11px; line-height: 1.45; }
.quick-actions-card p { margin: 7px 0 0; color: #527463; font-size: 11px; line-height: 1.4; }
.quick-actions-card small { display: block; margin-top: 6px; color: #92743c; font-size: 10px; }
.ready-mark { display: grid; place-items: center; width: 22px; height: 22px; border-radius: 50%; color: #fff; background: #20a368; font-weight: 800; }
.voice-command-card { margin: 0 0 16px; padding: 11px; border: 1px solid #c9dcff; border-radius: 11px; background: linear-gradient(145deg, #f5f8ff, #edf4ff); }
.voice-command-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.voice-command-head strong { display: block; margin-top: 3px; color: #173b82; font-size: 13px; letter-spacing: -.01em; }
.voice-button { display: inline-flex; align-items: center; gap: 5px; padding: 7px 9px; border: 1px solid #adc7f8; border-radius: 8px; color: #1d4ed8; background: #fff; font-size: 10px; font-weight: 800; }
.voice-button:hover { border-color: #6f9deb; background: #f8fbff; }
.voice-button.listening { color: #fff; border-color: #dc2626; background: #dc2626; }
.voice-button:disabled { cursor: not-allowed; opacity: .52; }
.voice-icon { display: inline-grid; place-items: center; width: 15px; height: 15px; border-radius: 50%; color: currentColor; font-size: 11px; }
.voice-button.listening .voice-icon { animation: voicePulse 1.1s ease-in-out infinite; }
@keyframes voicePulse { 0%, 100% { transform: scale(.78); opacity: .72; } 50% { transform: scale(1.1); opacity: 1; } }
.voice-help { margin: 8px 0 9px; color: #59719a; font-size: 10px; line-height: 1.4; }
.voice-input-row { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 5px; }
.voice-input-row input { min-width: 0; width: 100%; padding: 7px 8px; border: 1px solid #cbd9ef; border-radius: 7px; color: var(--ink); background: #fff; font-size: 11px; outline: none; }
.voice-input-row input:focus { border-color: #6f9deb; box-shadow: 0 0 0 2px rgba(37,99,235,.1); }
.voice-run { padding: 7px 9px; border: 0; border-radius: 7px; color: #fff; background: var(--blue); font-size: 10px; font-weight: 800; }
.voice-run:hover { background: var(--blue-dark); }
.voice-transcript { margin-top: 8px; color: #7485a0; font-size: 9px; line-height: 1.35; }
.work-search { display: flex; align-items: center; gap: 7px; margin: 0 0 8px; padding: 7px 8px; border: 1px solid var(--line-strong); border-radius: 9px; color: #667085; background: #fff; transition: .18s ease; }
.work-search:focus-within { border-color: #7ea4ef; box-shadow: 0 0 0 2px rgba(37,99,235,.1); }
.search-icon { flex: 0 0 auto; color: #6b86bd; font-size: 18px; line-height: 1; transform: rotate(-15deg); }
.work-search input { min-width: 0; flex: 1; width: 100%; padding: 1px 0; border: 0; outline: 0; color: var(--ink); background: transparent; font-size: 12px; }
.work-search input::placeholder { color: #98a2b3; }
.search-clear { display: grid; place-items: center; width: 20px; height: 20px; padding: 0; border: 0; border-radius: 50%; color: #667085; background: #eef2f7; font-size: 16px; line-height: 1; }
.search-clear:hover { color: var(--ink); background: #e1e8f2; }
.work-search-status { min-height: 15px; margin: 0 3px 4px; color: #8290a3; font-size: 10px; }
.work-search-empty { padding: 16px 10px; border: 1px dashed var(--line-strong); border-radius: 10px; color: var(--muted); background: #fafbfd; font-size: 12px; line-height: 1.4; text-align: center; }
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }
.work-filters { display: flex; gap: 5px; padding: 4px; overflow-x: auto; border: 1px solid var(--line); border-radius: 9px; background: #f8fafc; }
.filter { flex: 0 0 auto; padding: 6px 8px; border: 0; border-radius: 6px; color: var(--muted); background: transparent; font-size: 11px; font-weight: 700; }
.filter.active { color: var(--ink); background: #fff; box-shadow: 0 2px 5px rgba(15, 23, 42, .08); }
.work-catalog { display: grid; gap: 7px; margin-top: 13px; }
.work-item { display: grid; grid-template-columns: 35px 1fr auto; align-items: center; gap: 9px; width: 100%; padding: 9px 8px; border: 1px solid var(--line); border-radius: 10px; color: var(--ink); text-align: left; background: #fff; transition: .18s ease; }
.work-item:hover { border-color: #9db7f6; background: #f8fbff; transform: translateX(2px); }
.work-item .work-icon { display: grid; place-items: center; width: 30px; height: 30px; border-radius: 8px; color: #2457bb; background: #eaf1ff; font-size: 15px; }
.work-item[data-group="Plafonnage"] .work-icon { color: #a95d00; background: #fff3df; }
.work-item[data-group="Cloisons"] .work-icon { color: #0e716d; background: #e4f7f4; }
.work-item[data-group="Finitions"] .work-icon { color: #6d32cc; background: #f0e9ff; }
.work-item strong { display: block; font-size: 12px; line-height: 1.25; }
.work-item small { display: block; margin-top: 3px; color: var(--muted); font-size: 10px; }
.work-item .add-mark { color: #9aa6b7; font-size: 20px; line-height: 1; }
.panel-section-divider { height: 1px; margin: 22px 0 19px; background: var(--line); }
.plan-tools { display: grid; gap: 5px; }
.plan-tool { display: grid; grid-template-columns: 27px 1fr; grid-template-rows: auto auto; align-items: center; column-gap: 8px; width: 100%; padding: 8px; border: 1px solid transparent; border-radius: 9px; color: var(--ink-soft); background: transparent; text-align: left; }
.plan-tool:hover { background: #f3f6fb; }
.plan-tool.active { border-color: #cbdcff; color: #1748b5; background: #eff5ff; }
.plan-tool .tool-icon { grid-row: 1 / span 2; display: grid; place-items: center; width: 27px; height: 27px; border-radius: 7px; color: #6b778a; background: #eef1f5; font-size: 16px; }
.plan-tool.active .tool-icon { color: #fff; background: var(--blue); }
.plan-tool span:nth-child(2) { font-size: 12px; font-weight: 750; }
.plan-tool small { margin-top: 2px; color: #8490a0; font-size: 10px; }
.draw-type-control { display: grid; gap: 5px; margin-top: 12px; padding: 9px; border: 1px solid var(--line); border-radius: 9px; color: #788598; background: #fafbfd; font-size: 10px; font-weight: 700; }
.draw-type-control select { width: 100%; padding: 6px 7px; border: 1px solid #d6dee9; border-radius: 6px; color: var(--ink); background: #fff; font-size: 11px; outline: none; }
.draw-type-control select:focus { border-color: #7ea4ef; box-shadow: 0 0 0 2px rgba(37,99,235,.1); }
.left-note { display: flex; gap: 8px; margin-top: 18px; padding: 10px; border: 1px solid #dfe8f8; border-radius: 9px; color: #5e6d82; background: #f7faff; }
.left-note p { margin: 0; font-size: 11px; line-height: 1.42; }
.note-icon { display: grid; place-items: center; flex: 0 0 auto; width: 17px; height: 17px; border-radius: 50%; color: #2360d0; background: #dfeaff; font-size: 11px; font-weight: 800; }

.canvas-section { min-width: 0; background: var(--canvas); }
.canvas-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 15px; min-height: 70px; padding: 13px 21px; border-bottom: 1px solid var(--line); background: rgba(255,255,255,.75); }
.toolbar-title { display: grid; gap: 4px; }
.toolbar-title strong { font-size: 16px; letter-spacing: -.02em; }
.page-control { display: flex; align-items: flex-end; gap: 5px; margin-left: auto; }
.page-select-control { display: grid; gap: 3px; min-width: 150px; }
.page-select-control span { color: #7b8798; font-size: 10px; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; }
.page-select-control select { width: 100%; padding: 7px 28px 7px 8px; border: 1px solid var(--line); border-radius: 8px; color: var(--ink); background: #fff; font-size: 11px; font-weight: 700; outline: none; }
.page-select-control select:focus { border-color: #7ea4ef; box-shadow: 0 0 0 2px rgba(37,99,235,.1); }
.page-action.danger-action { color: #a33a32; }
.page-action.danger-action:hover { color: #b42318; border-color: #e5b3ae; background: #fffafa; }
.toolbar-actions { display: flex; align-items: center; gap: 5px; }
.canvas-button { display: inline-flex; align-items: center; gap: 6px; padding: 8px 9px; border: 1px solid var(--line); border-radius: 8px; color: #546176; background: #fff; font-size: 12px; font-weight: 700; }
.canvas-button:hover { border-color: #aebbd0; color: var(--ink); background: #fbfcfe; }
.canvas-button.square { justify-content: center; width: 30px; padding: 8px 0; font-size: 16px; }
.zoom-label { min-width: 46px; color: #667085; font-size: 11px; text-align: center; }
.plan-stage { display: block; min-height: 650px; padding: 34px; overflow: auto; scrollbar-gutter: stable both-edges; }
#planSizer { position: relative; margin: 0 auto; overflow: hidden; border-radius: 5px; box-shadow: var(--shadow); }
.plan { position: relative; width: 100%; aspect-ratio: 12 / 8; overflow: hidden; border: 1px solid #cbd5e1; border-radius: 5px; background: #fff; box-shadow: var(--shadow); transform-origin: top left; touch-action: none; }
#planStage.pan-ready, #planStage.pan-ready * { cursor: grab !important; }
#planStage.panning, #planStage.panning * { cursor: grabbing !important; user-select: none; }
#planStage.pan-ready { touch-action: none; }
#panPlanBtn[aria-pressed="true"] { color: var(--blue); background: #eff5ff; border-color: #a9c5f8; }
#planImage { position: absolute; z-index: 1; display: none; top: 0; left: 0; width: 12%; height: 8%; object-fit: contain; opacity: .45; }
#planSvg { position: absolute; z-index: 2; inset: 0; width: 100%; height: 100%; overflow: visible; }
#roomLayer, #roomWallLayer, #wallLabelLayer { position: absolute; z-index: 3; inset: 0; pointer-events: none; }
#roomWallLayer { z-index: 4; }
#wallLabelLayer { z-index: 5; }
.room-card { position: absolute; display: flex; align-items: center; justify-content: center; flex-direction: column; min-width: 55px; min-height: 36px; padding: 5px; border: 1.5px solid rgba(37, 99, 235, .43); color: #173b82; background: rgba(231, 239, 255, .53); pointer-events: auto; user-select: none; touch-action: none; transition: background .13s, box-shadow .13s; }
.room-card:nth-child(2n) { border-color: rgba(217, 119, 6, .45); color: #8c4d00; background: rgba(255, 243, 218, .56); }
.room-card:nth-child(3n) { border-color: rgba(15, 118, 110, .45); color: #0a655f; background: rgba(224, 248, 244, .56); }
.room-card.selected { z-index: 4; border-width: 2px; border-color: var(--blue); background: rgba(219, 232, 255, .73); box-shadow: 0 0 0 3px rgba(37, 99, 235, .11); }
.room-card.selected:nth-child(2n) { border-color: var(--amber); background: rgba(255, 237, 203, .78); box-shadow: 0 0 0 3px rgba(217, 119, 6, .1); }
.room-card.dragging { cursor: grabbing; }
.room-card.bulk-selected { z-index: 4; border-width: 2px; border-color: var(--violet); color: #5c27a8; background: rgba(239, 232, 255, .82); box-shadow: 0 0 0 3px rgba(124, 58, 237, .13); }
.room-card strong { font-size: 12px; letter-spacing: -.01em; }
.room-card small { margin-top: 3px; color: currentColor; font-size: 10px; opacity: .78; }
.room-card .room-opening-note { margin-top: 2px; color: #7c8796; font-size: 9px; }
.opening-marker { position: absolute; z-index: 8; display: block; padding: 0; border: 0; color: #172033; background: transparent; box-shadow: none; cursor: pointer; transform: translate(-50%, -50%); transform-origin: center; pointer-events: auto; overflow: visible; }
.opening-marker::after { content: none; }
#resetBtn[hidden] { display: none; }
#chantiersDialog { width: min(920px, calc(100vw - 24px)); max-height: calc(100dvh - 32px); padding: 0; }
.chantiers-body { padding: 24px; font-size: 1rem; }
.new-chantier-form { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; padding: 20px; background: #eff6ff; border: 1px solid #cbdcfb; border-radius: 14px; }
.new-chantier-form[hidden] { display: none; }
.new-chantier-form h3, .new-chantier-form p { grid-column: 1 / -1; margin: 0; }
.new-chantier-form p { font-size: .875rem; color: #475569; }
.new-chantier-form label { display: grid; gap: 6px; font-size: .875rem; font-weight: 600; }
.new-chantier-form input { min-width: 0; width: 100%; padding: 12px; background: white; color: #172033; border: 1px solid #bac8df; border-radius: 8px; font: inherit; }
.chantiers-toolbar { display: flex; justify-content: flex-end; flex-wrap: wrap; gap: 10px; margin-top: 20px; }
.chantier-row { display: flex; align-items: center; justify-content: space-between; gap: 18px; padding: 20px 0; border-bottom: 1px solid #dde4ef; }
.chantier-details { min-width: 0; overflow-wrap: anywhere; }
.chantier-details h3 { font-size: 1rem; margin: 0 0 7px; }
.chantier-details p { margin: 0 0 6px; color: #475569; }
.chantier-details small { font-size: .875rem; color: #526179; }
.chantier-current { display: inline-block; margin-left: 10px; font-size: .875rem; color: #1d4ed8; }
.chantier-actions { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; flex-shrink: 0; }
#chantiersDialog button { min-height: 44px; font-size: .875rem; }
#chantiersDialog button:disabled { opacity: .55; cursor: wait; }
#chantiersFeedback { color: #334155; overflow-wrap: anywhere; }
.chantier-empty { padding: 24px 0; color: #526179; }
@media (max-width: 760px) {
  .chantiers-body { padding: 16px; }
  .new-chantier-form { grid-template-columns: 1fr; padding: 16px; }
  .chantier-row { align-items: flex-start; flex-direction: column; }
  .chantier-actions { width: 100%; }
  .chantier-actions button { flex: 1; }
}
.opening-marker { touch-action: none; user-select: none; -webkit-user-select: none; cursor: grab; }
.opening-marker::before { content: ''; position: absolute; inset: -8px; }
.opening-marker.dragging { cursor: grabbing; z-index: 12; }
.opening-code { position: relative; z-index: 2; font-size: 9px; font-weight: 800; }
.opening-marker svg { display: block; width: 100%; height: 100%; overflow: visible; }
.opening-wall-mask { fill: #fff; }.opening-jambs,.door-leaf-line,.window-frame-lines { fill: none; stroke: #172033; stroke-width: 5; stroke-linecap: square; vector-effect: non-scaling-stroke; }.door-swing-arc { fill: none; stroke: #64748b; stroke-width: 2; stroke-dasharray: 5 3; vector-effect: non-scaling-stroke; }
.opening-marker.window { min-height: 22px; }
.opening-marker.selected { filter: drop-shadow(0 0 4px #2563eb); }.opening-marker.selected .opening-jambs,.opening-marker.selected .door-leaf-line,.opening-marker.selected .window-frame-lines { stroke: #1d4ed8; }
.room-handle { position: absolute; right: -6px; bottom: -6px; width: 12px; height: 12px; border: 2px solid #fff; border-radius: 3px; background: var(--blue); box-shadow: 0 2px 6px rgba(15,23,42,.24); cursor: nwse-resize; }
.room-wall-hit { display: block; position: absolute; padding: 0; border: 0; border-radius: 4px; background: transparent; cursor: pointer; pointer-events: auto; touch-action: none; }
.room-wall-hit::before { content: attr(data-wall-letter); position: absolute; z-index: 1; top: 50%; left: 50%; display: grid; width: 19px; height: 19px; place-items: center; border: 1px solid #a9bee9; border-radius: 50%; color: #1748b5; background: #fff; box-shadow: 0 1px 4px rgba(15,23,42,.14); font-size: 11px; font-weight: 800; line-height: 1; transform: translate(-50%, -50%); pointer-events: none; }
.room-wall-hit::before { content: none; }
#wallLetterLayer { position: absolute; z-index: 6; inset: 0; pointer-events: none; }
.wall-letter-leader { position: absolute; transform-origin: left center; pointer-events: none; opacity: .75; }
.wall-letter-badge { position: absolute; display: grid; place-items: center; padding: 0; border: 2px solid; border-radius: 50%; background: #fff; box-shadow: 0 2px 5px #0f172a24; font-size: 14px; font-weight: 800; line-height: 1; touch-action: none; cursor: pointer; user-select: none; }
.wall-letter-badge.variant-1, .wall-letter-badge.variant-3, .wall-letter-badge.variant-5 { border-radius: 7px; }
.wall-letter-badge.variant-2, .wall-letter-badge.variant-5 { border-style: dashed; }
.wall-letter-badge:hover, .wall-letter-badge.selected, .wall-letter-badge:focus-visible { outline: 3px solid #172033; outline-offset: 2px; background: #eff6ff; z-index: 2; }
.wall-letter-badge.bulk-selected { outline: 3px solid #7c3aed; outline-offset: 2px; background: #f5f3ff; }
.room-wall-hit::after { content: ''; position: absolute; border-radius: 3px; background: transparent; transition: background .13s, box-shadow .13s; }
.room-wall-hit[data-orientation="horizontal"]::after { top: 50%; right: 0; left: 0; height: 4px; transform: translateY(-50%); }
.room-wall-hit[data-orientation="vertical"]::after { top: 0; bottom: 0; left: 50%; width: 4px; transform: translateX(-50%); }
@media (pointer: coarse) {
  .room-wall-hit[data-orientation="horizontal"]::after { height: 12px; }
  .room-wall-hit[data-orientation="vertical"]::after { width: 12px; }
  .wall-hit { stroke-width: .62; }
  .room-card { min-width: 68px; min-height: 48px; }
}
.room-wall-hit:hover::after, .room-wall-hit.selected::after { background: var(--blue); box-shadow: 0 0 0 3px rgba(37,99,235,.13); }
.room-wall-hit.bulk-selected::after { background: var(--violet); box-shadow: 0 0 0 3px rgba(124,58,237,.13); }
.room-wall-hit:hover::before, .room-wall-hit.selected::before { border-color: var(--blue); color: #fff; background: var(--blue); }
.room-wall-hit.bulk-selected::before { border-color: var(--violet); color: #fff; background: var(--violet); }
.room-wall-hit:focus-visible { outline: 2px solid var(--blue); outline-offset: 2px; }
.room-card.polygon-room { border: 0; padding: 0; min-width: 0; min-height: 0; }
.polygon-room-label { position: absolute; transform: translate(-50%, -50%); display: flex; flex-direction: column; align-items: center; width: max-content; max-width: 100%; text-align: center; }
.polygon-wall-overlay { position: absolute; inset: 0; width: 100%; height: 100%; overflow: visible; pointer-events: none; }
.polygon-wall-outline { stroke: #7c9dce; stroke-width: 2px; pointer-events: none; }
.polygon-wall-outline.selected { stroke: var(--blue); stroke-width: 4px; }
.polygon-wall-outline.bulk-selected { stroke: var(--violet); stroke-width: 4px; }
.polygon-wall-hit { stroke: transparent; stroke-width: 16px; cursor: pointer; }
.room-wall-edit-overlay { position: absolute; z-index: 8; inset: 0; width: 100%; height: 100%; overflow: visible; pointer-events: none; }
.room-wall-edit-line { stroke: var(--blue); stroke-width: 4px; stroke-dasharray: 7 5; pointer-events: none; }
.room-wall-point-handle { cursor: move; touch-action: none; filter: drop-shadow(0 2px 2px rgba(15,23,42,.28)); }
.room-wall-center-handle { fill: var(--blue); stroke: #fff; stroke-width: .06; cursor: grab; touch-action: none; filter: drop-shadow(0 2px 3px rgba(37,99,235,.4)); }
.room-wall-center-handle:active { cursor: grabbing; }
@media (pointer: coarse) { .room-wall-point-handle { stroke-width: .09; } }
.polygon-wall-letter { width: 24px; height: 24px; transform: translate(-50%, -50%); }
.polygon-edit-help { margin: 10px 0 0; color: #52647f; font-size: 14px; line-height: 1.4; }
.room-handle.polygon-resize-handle { position: static; flex: 0 0 auto; width: 18px; height: 18px; margin-top: 6px; }
.wall-visible { stroke: #26374e; stroke-width: .075; stroke-linecap: round; }
.wall-visible.partition { stroke: var(--teal); stroke-width: .09; stroke-dasharray: .18 .1; }
.wall-hit { stroke: transparent; stroke-width: .36; stroke-linecap: round; cursor: grab; }
.wall-hit:active { cursor: grabbing; }
.wall-visible.selected-wall { stroke: var(--blue); stroke-width: .105; }
.wall-visible.bulk-selected-wall { stroke: var(--violet); stroke-width: .12; filter: drop-shadow(0 0 2px rgba(124,58,237,.35)); }
.wall-handle { fill: #f6b73c; stroke: #fff; stroke-width: .04; cursor: crosshair; }
.wall-label { position: absolute; padding: 3px 6px; border: 1px solid rgba(148, 163, 184, .38); border-radius: 999px; color: #59687d; background: rgba(255,255,255,.92); font-size: 10px; font-weight: 800; line-height: 1; transform: translate(-50%, -50%); pointer-events: none; white-space: nowrap; }
.wall-label.selected { color: #1748b5; border-color: #aac1f3; background: #f3f7ff; }
.wall-label.bulk-selected { color: #5c27a8; border-color: #c9b6f4; background: #f4efff; box-shadow: 0 0 0 2px rgba(124,58,237,.1); }
.wall-label.live { color: #fff; border-color: #2563eb; background: #2563eb; box-shadow: 0 4px 12px rgba(37,99,235,.24); }
.wall-preview-line { stroke: #2563eb; stroke-width: .085; stroke-dasharray: .18 .10; stroke-linecap: round; }
.wall-preview-dot { fill: #f6b73c; stroke: #fff; stroke-width: .04; }
.wall-preview-dot.snap { fill: var(--violet); }
.plan-origin-label { position: absolute; z-index: 6; right: 9px; bottom: 7px; color: #94a3b8; font-size: 9px; pointer-events: none; }
.placement-tip { position: absolute; left: 50%; bottom: 12px; padding: 7px 11px; border: 1px solid #dce3ed; border-radius: 999px; color: #667085; background: rgba(255,255,255,.9); box-shadow: 0 4px 12px rgba(15, 23, 42, .06); font-size: 11px; transform: translateX(-50%); white-space: nowrap; }
.canvas-footer { display: flex; justify-content: space-between; gap: 15px; padding: 9px 21px; border-top: 1px solid var(--line); color: #8290a1; background: #fff; font-size: 10px; }
.legend { display: flex; gap: 15px; flex-wrap: wrap; }
.legend span { display: inline-flex; align-items: center; gap: 5px; }
.legend-dot { display: inline-block; width: 8px; height: 8px; border-radius: 2px; }
.room-dot { background: #8cb1fa; }
.wall-dot { background: var(--teal); }
.legend-line { display: inline-block; width: 12px; border-top: 1px dashed #8391a3; }

.summary-head { align-items: center; }
.summary-head h2 { font-size: 19px; }
.live-status { display: inline-flex; align-items: center; gap: 6px; padding: 5px 7px; border-radius: 999px; color: #24745e; background: #edf9f4; font-size: 10px; font-weight: 750; }
.live-status i { width: 6px; height: 6px; border-radius: 50%; background: #31a77c; }
.selection-card { min-height: 95px; margin-top: 17px; padding: 12px; border: 1px solid #e0e7f0; border-radius: 11px; background: #f8fafc; }
.bulk-selection-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.bulk-selection-head strong { font-size: 13px; }
.bulk-selection-head small { color: #7c8999; font-size: 10px; }
.bulk-count { display: grid; place-items: center; min-width: 27px; height: 27px; padding: 0 7px; border-radius: 8px; color: #5c27a8; background: #eee7ff; font-size: 12px; font-weight: 800; }
.bulk-select-actions { display: flex; gap: 6px; margin-top: 9px; }
.bulk-group-actions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 10px; }
.bulk-group-actions .mini-button { flex: 1 1 130px; padding: 10px; font-size: 14px; }
.bulk-group-actions button:disabled { opacity: .5; cursor: not-allowed; }
#selectionFrame { position: absolute; z-index: 12; pointer-events: none; border: 2px solid #7c3aed; background: rgba(124,58,237,.12); box-sizing: border-box; }
#selectionFrame[hidden] { display: none; }
.plan.bulk-mode { cursor: crosshair; touch-action: none; }
.plan.bulk-mode .room-card.bulk-selected { cursor: grab; }
.plan.group-dragging, .plan.group-dragging * { cursor: grabbing !important; }
#groupSelectBtn[aria-pressed=true] { background: #eee7ff; color: #5c27a8; border-color: #b8a0e9; }
.bulk-help { margin: 9px 0 0; color: #6f6a82; font-size: 10px; line-height: 1.4; }
.bulk-measure-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 5px; margin-top: 11px; }
.bulk-measure-grid > div { padding: 7px; border: 1px solid #e8ddfb; border-radius: 7px; background: #faf8ff; }
.bulk-measure-grid span { display: block; color: #7c708d; font-size: 9px; }
.bulk-measure-grid strong { display: block; margin-top: 4px; color: #5c27a8; font-size: 13px; }
.bulk-work-title { margin-top: 13px; color: #475467; font-size: 10px; font-weight: 800; text-transform: uppercase; letter-spacing: .07em; }
.bulk-work-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 5px; margin-top: 7px; }
.bulk-work-button { display: flex; align-items: center; gap: 6px; min-height: 42px; padding: 6px; border: 1px solid #e3d8f8; border-radius: 7px; color: #5c27a8; background: #fff; font-size: 10px; text-align: left; }
.bulk-work-button:hover:not(:disabled) { border-color: #b8a0e9; background: #faf8ff; }
.bulk-work-button:disabled { cursor: not-allowed; opacity: .45; }
.bulk-work-button > span:first-child { font-size: 14px; }
.bulk-work-button strong, .bulk-work-button small { display: block; }
.bulk-work-button small { margin-top: 2px; color: #8b819b; font-size: 9px; }
.bulk-selection-list { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 9px; }
.bulk-selection-tag, .bulk-selection-empty { padding: 4px 6px; border-radius: 5px; color: #68587f; background: #efe9fb; font-size: 9px; }
.bulk-selection-empty { color: #8a96a5; background: transparent; padding-left: 0; }
.selection-empty { display: grid; place-items: center; min-height: 70px; color: #8995a5; font-size: 12px; text-align: center; line-height: 1.4; }
.selection-title { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-bottom: 9px; }
.selection-heading { display: grid; gap: 2px; min-width: 0; }
.selection-title strong { font-size: 13px; }
.selection-title small { color: #7c8999; font-size: 10px; }
.selection-meta { display: block; margin-top: -5px; margin-bottom: 9px; color: #7c8999; font-size: 10px; }
.selection-fields { display: grid; grid-template-columns: repeat(3, 1fr); gap: 7px; }
.selection-fields label { display: grid; gap: 4px; color: #7a8797; font-size: 9px; font-weight: 700; }
.selection-fields input, .selection-fields select { width: 100%; padding: 6px 6px; border: 1px solid #d6dee9; border-radius: 6px; color: var(--ink); background: #fff; font-size: 12px; outline: none; }
.selection-fields input:focus, .selection-fields select:focus { border-color: #7ea4ef; box-shadow: 0 0 0 2px rgba(37,99,235,.1); }
.selection-actions { display: flex; gap: 6px; margin-top: 9px; }
.mini-button { padding: 5px 7px; border: 1px solid #d6dee9; border-radius: 6px; color: #546176; background: #fff; font-size: 10px; font-weight: 700; }
.mini-button:hover { color: var(--blue); border-color: #9fb9ed; }
.mini-button.danger { color: #b42318; }
.opening-row { display: flex; gap: 7px; margin-top: 9px; }
.opening-chip { display: inline-flex; align-items: center; gap: 4px; padding: 4px 6px; border-radius: 6px; color: #657286; background: #edf1f6; font-size: 10px; }
.opening-chip b { color: var(--ink); font-size: 11px; }
.wall-measure { display: grid; grid-template-columns: 1fr auto; gap: 3px 8px; align-items: center; margin-top: 10px; padding: 9px; border: 1px solid #d8e4fb; border-radius: 8px; background: #f3f7ff; }
.wall-measure span { color: #64748b; font-size: 10px; font-weight: 700; }.wall-measure strong { color: var(--blue); font-size: 16px; }.wall-measure small { grid-column: 1 / -1; color: #8190a4; font-size: 9px; }
.wall-measure .measure-secondary { color: var(--teal); }
.wall-task-title { margin-top: 13px; color: #475467; font-size: 10px; font-weight: 800; text-transform: uppercase; letter-spacing: .07em; }
.wall-task-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 5px; margin-top: 7px; }
.wall-task-button { display: flex; align-items: center; gap: 5px; min-height: 30px; padding: 5px 6px; border: 1px solid #dbe3ee; border-radius: 7px; color: #475467; background: #fff; font-size: 10px; font-weight: 700; line-height: 1.15; text-align: left; }
.wall-task-button:hover { color: var(--blue); border-color: #9db8ef; background: #f7faff; }
.wall-task-button span { color: var(--blue); font-size: 13px; }
.wall-work-summary { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 8px; }
.wall-work-chip, .wall-work-empty { padding: 4px 6px; border-radius: 5px; color: #637185; background: #eaf0f7; font-size: 9px; }
.wall-work-empty { color: #8a96a5; background: transparent; padding-left: 0; }
.inspection-card { display: grid; gap: 8px; margin-top: 10px; padding: 10px; border: 1px solid #dfe5ed; border-radius: 9px; background: #fbfcfe; }
.inspection-card > strong { color: #475467; font-size: 10px; text-transform: uppercase; letter-spacing: .06em; }
.inspection-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 6px; }
.inspection-card label { display: grid; gap: 4px; color: #788599; font-size: 9px; font-weight: 700; }
.inspection-card select, .inspection-card textarea { width: 100%; padding: 6px; border: 1px solid #d6dee9; border-radius: 6px; color: var(--ink); background: #fff; font: inherit; font-size: 11px; resize: vertical; }
.inline-photo-button { display: inline-flex !important; justify-self: start; align-items: center; width: auto !important; padding: 6px 8px; border: 1px solid #bfd0ed; border-radius: 7px; color: #2457bb !important; background: #f5f8ff; font-size: 10px !important; cursor: pointer; }
.inline-photo-button:hover { border-color: #7ea4ef; background: #edf4ff; }
.selection-photo-empty { color: #8a96a5; font-size: 10px; }
.selection-photo-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 5px; }
.selection-photo-grid figure { position: relative; min-width: 0; margin: 0; overflow: hidden; border: 1px solid #d9e2ee; border-radius: 6px; background: #fff; }
.selection-photo-grid img { display: block; width: 100%; height: 58px; object-fit: cover; }
.selection-photo-grid .photo-remove { position: absolute; top: 2px; right: 2px; width: 19px; height: 19px; padding: 0; border: 0; border-radius: 50%; color: #fff; background: rgba(30,41,59,.76); font-size: 14px; line-height: 1; }
.selection-photo-grid .photo-remove:hover { background: #b42318; }

.metric-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; margin-top: 13px; }
.metric-card { min-height: 76px; padding: 10px; border: 1px solid var(--line); border-left-width: 3px; border-radius: 9px; background: #fff; }
.metric-card.blue { border-left-color: var(--blue); }.metric-card.amber { border-left-color: var(--amber); }.metric-card.teal { border-left-color: var(--teal); }.metric-card.violet { border-left-color: var(--violet); }
.metric-card span { display: block; color: #748196; font-size: 10px; font-weight: 700; }
.metric-card strong { display: block; margin-top: 5px; color: var(--ink); font-size: 17px; letter-spacing: -.04em; }
.metric-card small { display: block; margin-top: 2px; color: #98a3b2; font-size: 9px; }
.quote-headline { align-items: center; margin-top: 22px; color: var(--ink); font-size: 13px; font-weight: 800; }
.quote-lines { display: grid; gap: 5px; max-height: 235px; margin-top: 10px; overflow: auto; }
.quote-room-group { min-width: 0; margin-bottom: 8px; padding: 10px; border: 1px solid #d7e1ef; border-radius: 9px; background: #f8faff; }
.quote-room-title { margin: 0 0 10px; color: #173b82; font-size: 16px; overflow-wrap: anywhere; }
.quote-room-title small { display: block; margin-top: 3px; color: #64748b; font-size: 13px; font-weight: 400; }
.quote-room-group .quote-line { flex-wrap: wrap; margin: 5px 0; }
.quote-wall-title { display: flex; justify-content: space-between; align-items: baseline; gap: 8px; margin: 12px 0 5px; padding: 7px 9px; border-left: 4px solid var(--blue); border-radius: 5px; color: #173b82; background: #edf4ff; }
.quote-wall-title strong { font-size: 14px; }
.quote-wall-title small { color: #52647f; font-size: 12px; text-align: right; }
.quote-room-group .quote-line-main { flex: 1 1 160px; }
.quote-room-group .quote-line-main > div { min-width: 0; }
.quote-room-group .quote-line-main strong { white-space: normal; overflow-wrap: anywhere; font-size: 14px; }
.quote-room-group .quote-line-main small { font-size: 13px; line-height: 1.4; overflow-wrap: anywhere; }
.quote-work-description { color: #40536e !important; font-style: italic; }
.quote-room-group .quote-line-price { flex-wrap: wrap; align-items: center; margin-left: auto; font-size: 14px; }
.quote-unit-price { display: grid; gap: 2px; color: #52647f; font-size: 11px; font-weight: 700; }
.quote-unit-price input { width: 82px; min-width: 0; padding: 5px 6px; border: 1px solid #b9c8dc; border-radius: 6px; color: var(--ink); background: #fff; font: inherit; font-size: 14px; font-weight: 800; }
.quote-unit-price input:focus { outline: 2px solid #93b4f4; border-color: var(--blue); }
.quote-line-total { min-width: 76px; text-align: right; }
.quote-room-group .option-work { font-size: 13px; padding: 4px 6px; }
.quote-room-group .remove-work { padding: 4px; font-size: 20px; }
.quote-room-sum, .quote-room-option-sum { display: flex; justify-content: space-between; flex-wrap: wrap; gap: 6px; padding-top: 8px; font-size: 14px; }
.quote-room-sum { margin-top: 8px; border-top: 1px solid #d7e1ef; color: #173b82; }
.quote-room-option-sum { color: #80601f; }
.quote-room-empty { color: #64748b; font-size: 14px; }
.quote-room-assignment { display: grid; gap: 5px; flex-basis: 100%; min-width: 0; color: #52647f; font-size: 14px; }
.quote-room-assignment select { width: 100%; min-width: 0; padding: 6px; border: 1px solid #d6dee9; border-radius: 6px; background: white; color: var(--ink); font: inherit; }
.dialog-table .quote-room-heading th { padding-top: 16px; background: #eaf1fc; color: #173b82; font-size: 16px; text-transform: none; letter-spacing: normal; text-align: left; }
.dialog-table .quote-room-heading small { display: block; margin-top: 4px; color: #64748b; font-size: 13px; font-weight: 400; }
.dialog-table .quote-wall-heading th { padding: 9px 12px; border-left: 4px solid #2563eb; color: #173b82; background: #f1f6ff; text-align: left; text-transform: none; letter-spacing: normal; }
.dialog-table .quote-wall-heading span { font-size: 14px; }
.dialog-table .quote-wall-heading small { display: block; margin-top: 3px; color: #64748b; font-size: 12px; font-weight: 400; }
.dialog-table .quote-room-subtotal td { background: #f3f6fc; font-weight: 800; color: #173b82; font-size: 14px; }
.dialog-table .quote-room-options td { color: #80601f; font-size: 14px; }
.dialog-table .quote-room-subtotal td:first-child, .dialog-table .quote-room-options td:first-child { text-align: right; }
.empty-quote { padding: 16px 9px; border: 1px dashed #d5deea; border-radius: 8px; color: #8793a3; background: #fbfcfe; font-size: 11px; line-height: 1.4; text-align: center; }
.quote-line { display: flex; justify-content: space-between; gap: 7px; padding: 8px 7px; border: 1px solid #e6ebf2; border-radius: 8px; background: #fff; }
.quote-line-main { display: flex; gap: 7px; min-width: 0; }
.quote-line-main .line-dot { flex: 0 0 auto; width: 6px; height: 6px; margin-top: 5px; border-radius: 50%; background: var(--blue); }
.quote-line-main strong { display: block; overflow: hidden; color: #2d3b50; font-size: 11px; line-height: 1.2; text-overflow: ellipsis; white-space: nowrap; }
.quote-line-main small { display: block; margin-top: 3px; color: #8894a4; font-size: 9px; }
.quote-line-price { display: flex; align-items: flex-start; gap: 5px; color: var(--ink); font-size: 11px; font-weight: 800; white-space: nowrap; }
.edit-work { padding: 4px 7px; border: 1px solid #cbd5e1; border-radius: 6px; color: #34517e; background: #fff; font-size: 15px; }
.client-mode-button[aria-pressed="true"] { color: #172033; border-color: #f0c45f; background: #fff4d6; }
body.client-mode .quote-unit-price, body.client-mode .quote-line-total, body.client-mode .totals-card, body.client-mode .price-note, body.client-mode .prices-button { display: none !important; }
body.client-mode .client-mode-button { color: #172033; border-color: #f0c45f; background: #fff4d6; }
body.client-mode #quoteDialog .dialog-table th:nth-child(3), body.client-mode #quoteDialog .dialog-table th:nth-child(4), body.client-mode #quoteDialog .dialog-table td:nth-child(3), body.client-mode #quoteDialog .dialog-table td:nth-child(4), body.client-mode #quoteDialog .quote-settings, body.client-mode #quoteDialog .quote-totals { display: none !important; }
.quote-quantity { display: inline-flex; align-items: center; gap: 3px; color: #7b8798; font-size: 9px; font-weight: 700; }
.quote-quantity input { width: 52px; padding: 3px 4px; border: 1px solid #d7dfeb; border-radius: 5px; color: var(--ink); background: #fff; font-size: 11px; font-weight: 700; }
.quote-quantity input:focus { border-color: #7ea4ef; outline: 0; box-shadow: 0 0 0 2px rgba(37,99,235,.1); }
.quote-quantity input::placeholder { color: #a0aab8; }
.remove-work { padding: 0; border: 0; color: #a0aab8; background: transparent; font-size: 15px; line-height: 1; }
.remove-work:hover { color: #b42318; }
.option-work { padding: 2px 5px; border: 1px solid #d7dfeb; border-radius: 5px; color: #7b8798; background: #fff; font-size: 8px; font-weight: 800; }
.option-work.active { color: #9a5b00; border-color: #efc46f; background: #fff8e8; }
.optional-row { color: #80601f; background: #fffaf0; }
.option-total { margin-top: 8px; padding: 8px 10px; border-radius: 7px; color: #80601f; background: #fff7e5; font-size: 11px; text-align: right; }
.totals-card { display: grid; gap: 6px; margin-top: 12px; padding: 12px; border-radius: 10px; color: #647185; background: #f2f5f8; }
.totals-card > div { display: flex; justify-content: space-between; gap: 8px; font-size: 11px; }
.totals-card strong { color: #344054; }
.totals-card .grand-total { margin-top: 5px; padding-top: 9px; border-top: 1px solid #d9e0e8; color: var(--ink); font-size: 13px; }
.totals-card .grand-total strong { color: var(--blue); font-size: 18px; letter-spacing: -.04em; }
.totals-card > small { color: #8390a0; font-size: 10px; }
.right-panel .full { margin-top: 12px; }
.price-note { margin: 10px 2px 0; color: #98a3b1; font-size: 10px; line-height: 1.4; }

@media (min-width: 1181px) {
  .app-shell { min-height: calc(100vh - 130px); height: auto; overflow: visible; align-items: start; }
  .left-panel, .right-panel { min-height: calc(100vh - 130px); height: auto; overflow: visible; }
  .left-panel { position: sticky; top: 0; max-height: 100vh; overflow-y: auto; overscroll-behavior: contain; scrollbar-gutter: stable; }
  .canvas-section { position: sticky; top: 0; display: flex; flex-direction: column; min-height: 0; height: 100vh; overflow: hidden; }
  .canvas-toolbar, .canvas-footer { flex: 0 0 auto; }
  .plan-stage { flex: 1 1 auto; min-height: 0; height: auto; overflow: auto; }
}

.toast { position: fixed; z-index: 20; right: 22px; bottom: 22px; padding: 10px 14px; border: 1px solid #d4ddea; border-radius: 9px; color: #fff; background: #1e293b; box-shadow: 0 10px 26px rgba(15, 23, 42, .2); font-size: 12px; opacity: 0; pointer-events: none; transform: translateY(7px); transition: .2s ease; }
.toast.show { opacity: 1; transform: translateY(0); }

dialog { width: min(880px, calc(100vw - 30px)); max-height: calc(100vh - 30px); padding: 0; border: 0; border-radius: 14px; color: var(--ink); box-shadow: 0 24px 80px rgba(15,23,42,.28); }
dialog::backdrop { background: rgba(15, 23, 42, .53); backdrop-filter: blur(3px); }
.dialog-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 15px; padding: 21px 24px 15px; border-bottom: 1px solid var(--line); }
.dialog-head h2 { margin: 3px 0 0; font-size: 22px; letter-spacing: -.04em; }
.close-button { width: 29px; height: 29px; padding: 0; border: 1px solid var(--line); border-radius: 7px; color: #6c788a; background: #fff; font-size: 20px; line-height: 1; }
.dialog-company { display: flex; align-items: center; gap: 10px; padding: 17px 24px; border-bottom: 1px solid var(--line); }
.dialog-logo { width: 35px; height: 35px; border-radius: 10px; font-size: 12px; }
.dialog-logo img { width: 100%; height: 100%; object-fit: contain; border-radius: inherit; }
.company-logo-upload { display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 10px; margin: 0 0 18px; padding: 12px; border: 1px dashed var(--line); border-radius: 12px; }
.company-logo-upload img { width: 76px; height: 48px; object-fit: contain; border-radius: 6px; background: #fff; }
.company-logo-upload small, .company-logo-empty { color: var(--muted); font-size: 12px; }
.dialog-company strong, .dialog-company span { display: block; }.dialog-company strong { font-size: 13px; }.dialog-company span { margin-top: 3px; color: var(--muted); font-size: 11px; }
.quote-visit-notes { margin: 0 0 16px; padding: 11px 13px; border: 1px solid #d8e4f6; border-radius: 8px; color: #52647f; background: #f7faff; }
.quote-visit-notes h3 { margin: 0 0 6px; color: #2457bb; font-size: 11px; text-transform: uppercase; letter-spacing: .06em; }
.quote-visit-notes p { margin: 4px 0 0; font-size: 11px; line-height: 1.45; white-space: pre-line; }
.dialog-ref { margin-left: auto; text-align: right; }.dialog-ref span { color: #7d899b; font-size: 10px; font-weight: 800; letter-spacing: .1em; }.dialog-ref strong { margin-top: 4px; font-size: 13px; }
#dialogContent { padding: 20px 24px; overflow: auto; }
.dialog-table { width: 100%; border-collapse: collapse; font-size: 12px; }.dialog-table th { padding: 9px 8px; color: #7b8798; background: #f3f6f9; font-size: 10px; text-align: left; text-transform: uppercase; letter-spacing: .06em; }.dialog-table th:not(:first-child), .dialog-table td:not(:first-child) { text-align: right; }.dialog-table td { padding: 11px 8px; border-bottom: 1px solid #edf0f4; vertical-align: top; }.dialog-table td strong { font-size: 11px; }.dialog-table td small { color: #8a96a6; }.dialog-total { display: flex; justify-content: flex-end; padding-top: 17px; color: var(--blue); font-size: 19px; font-weight: 800; letter-spacing: -.03em; }.dialog-actions { display: flex; justify-content: flex-end; gap: 8px; padding: 15px 24px 21px; border-top: 1px solid var(--line); }
.dialog-actions .button.ghost { color: var(--ink-soft); border-color: var(--line-strong); background: #fff; }
.prices-dialog { width: min(980px, calc(100vw - 30px)); }
.prices-dialog-body { display: grid; gap: 18px; max-height: calc(100vh - 190px); padding: 20px 24px; overflow: auto; }
.price-rate-card { padding: 15px; border: 1px solid #cfe0ff; border-radius: 11px; background: linear-gradient(145deg, #f6f9ff, #edf4ff); }
.custom-price-card { padding: 15px; border: 1px solid #d9e8e5; border-radius: 11px; background: linear-gradient(145deg, #f8fffd, #eff9f7); }
.price-rate-head, .prices-section-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 15px; }
.price-rate-head strong { display: block; margin-top: 4px; font-size: 16px; }
.price-rate-badge, .prices-count, .unit-price-badge { flex: 0 0 auto; padding: 6px 8px; border-radius: 999px; color: #2457bb; background: #dfeaff; font-size: 11px; font-weight: 800; }
.prices-table input { width: 100%; padding: 8px 9px; border: 1px solid #cbd9ef; border-radius: 7px; color: var(--ink); background: #fff; font-size: 13px; outline: none; }
.prices-table input:focus { border-color: #6f9deb; box-shadow: 0 0 0 2px rgba(37,99,235,.1); }
.prices-dialog-note, .prices-section-head p { margin: 9px 0 0; color: #657895; font-size: 12px; line-height: 1.45; }
.prices-section-head h3 { margin: 4px 0 0; font-size: 18px; letter-spacing: -.03em; }
.prices-section-head p { max-width: 600px; }
.custom-item-form { display: grid; grid-template-columns: repeat(2,minmax(170px,1fr)); align-items: end; gap: 10px; margin-top: 15px; }
.custom-item-form label { display: grid; gap: 5px; color: #52647f; font-size: 12px; font-weight: 800; }
.custom-item-form input, .custom-item-form select { width: 100%; padding: 8px 9px; border: 1px solid #c9ddd9; border-radius: 7px; color: var(--ink); background: #fff; font-size: 13px; outline: none; }
.custom-item-form input:focus, .custom-item-form select:focus { border-color: #4aa99b; box-shadow: 0 0 0 2px rgba(15,118,110,.1); }
.custom-item-form .button { white-space: nowrap; }
.price-name input { width: 100%; min-width: 160px; margin-bottom: 5px; padding: 6px 7px; border: 1px solid #cbd5e1; border-radius: 6px; font: inherit; }
.danger-outline { color: #b42318 !important; border-color: #e7aaa4 !important; }
.custom-item-note { margin: 10px 0 0; color: #6f8d88; font-size: 11px; line-height: 1.4; }
.prices-table-wrap { margin-top: 12px; overflow-x: auto; border: 1px solid var(--line); border-radius: 10px; }
.prices-table { width: 100%; min-width: 620px; border-collapse: collapse; font-size: 12px; }
.prices-table th { padding: 10px 9px; color: #718096; background: #f3f6f9; font-size: 10px; text-align: left; text-transform: uppercase; letter-spacing: .06em; white-space: nowrap; }
.prices-table th:not(:first-child), .prices-table td:not(:first-child) { text-align: right; }
.prices-table td { padding: 9px; border-top: 1px solid #edf0f4; vertical-align: middle; }
.prices-table td:first-child { width: 48%; text-align: left; }
.prices-table td:nth-child(2) { width: 14%; }
.prices-table td:nth-child(3) { width: 22%; }
.prices-table td:nth-child(4) { width: 16%; }
.prices-table input { min-width: 116px; text-align: right; }
.prices-table .price-preview { color: var(--blue); font-weight: 800; white-space: nowrap; }
.prices-table .price-static { color: #8a96a6; font-size: 11px; white-space: nowrap; }
.prices-table .price-delete { padding: 5px 7px; border: 1px solid #e5b3ae; border-radius: 6px; color: #b42318; background: #fffafa; font-size: 10px; font-weight: 800; white-space: nowrap; }
.prices-table .price-delete:hover { border-color: #d97870; background: #fff2f0; }
.price-name strong { display: block; color: #2d3b50; font-size: 12px; }
.price-name small { display: block; margin-top: 3px; color: #8793a3; font-size: 11px; }
.prices-count { color: #59687d; background: #eef1f5; }
.project-dialog { width: min(940px, calc(100vw - 30px)); }
.project-dialog-body { display: grid; gap: 16px; max-height: calc(100vh - 170px); padding: 20px 24px; overflow: auto; }
.project-form-section { padding: 15px; border: 1px solid var(--line); border-radius: 11px; background: #fbfcfe; }
.project-form-section h3 { margin: 0 0 12px; font-size: 16px; }
.project-form-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; }
.project-form-grid label, .quote-settings label { display: grid; gap: 5px; color: #52647f; font-size: 11px; font-weight: 800; }
.project-form-grid .wide, .quote-settings .wide { grid-column: span 2; }
.project-form-grid input, .project-form-grid select, .project-form-section textarea, .quote-settings input, .quote-settings textarea { width: 100%; padding: 9px; border: 1px solid #d2dbe7; border-radius: 7px; color: var(--ink); background: #fff; font: inherit; font-size: 12px; resize: vertical; }
.technical-notes-grid label { align-items: stretch; }
.visit-checklist { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
.visit-checklist label { display: flex; align-items: center; gap: 8px; min-height: 34px; padding: 7px 9px; border: 1px solid #dce4ed; border-radius: 7px; color: #52647f; background: #fff; font-size: 12px; cursor: pointer; }
.visit-checklist label:has(input:checked) { border-color: #8dcfc5; color: #0f766e; background: #effaf8; }
.visit-checklist input { width: 16px; height: 16px; accent-color: #0f766e; }
.project-photo-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.project-photo-head h3 { margin-bottom: 3px; }.project-photo-head small { color: var(--muted); font-size: 10px; }
.photo-button { cursor: pointer; }
.project-photo-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 9px; margin-top: 12px; }
.project-photo-grid figure { min-width: 0; margin: 0; overflow: hidden; border: 1px solid var(--line); border-radius: 8px; background: #fff; }
.project-photo-grid img { display: block; width: 100%; height: 92px; object-fit: cover; }
.project-photo-grid figcaption { display: flex; align-items: center; gap: 5px; padding: 6px; color: #657286; font-size: 9px; }
.project-photo-grid figcaption span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }.project-photo-grid figcaption button { margin-left: auto; border: 0; color: #b42318; background: transparent; }
.project-photo-empty { grid-column: 1 / -1; margin: 0; padding: 18px; border: 1px dashed #d5deea; border-radius: 8px; color: #8a96a5; font-size: 11px; text-align: center; }
.quote-client { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-bottom: 15px; }
.quote-client > div { padding: 12px; border: 1px solid var(--line); border-radius: 8px; }.quote-client span, .quote-client small { display: block; color: var(--muted); font-size: 10px; }.quote-client strong { display: block; margin: 4px 0; font-size: 13px; }
.quote-settings { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 9px; margin-top: 16px; padding: 12px; border-radius: 9px; background: #f5f7fa; }
.quote-totals { display: grid; gap: 6px; width: min(390px, 100%); margin: 16px 0 0 auto; }.quote-totals > div { display: flex; justify-content: space-between; gap: 20px; font-size: 12px; }.quote-totals .quote-total-main { padding-top: 9px; border-top: 1px solid var(--line-strong); color: var(--blue); font-size: 17px; }
.signature-section { display: grid; gap: 8px; margin-top: 18px; }.signature-section small { display: block; margin-top: 3px; color: var(--muted); font-size: 10px; }.signature-section canvas { width: 100%; height: 130px; border: 1px dashed #9aabc1; border-radius: 8px; background: #fff; touch-action: none; }.signature-section .mini-button { justify-self: start; }

@media (max-width: 1180px) {
  .topbar { gap: 16px; padding-right: 16px; padding-left: 16px; }.brand { min-width: 205px; }.company-control { min-width: 160px; }.top-actions .ghost:not(.prices-button):not(.client-mode-button) { display: none; }
  .app-shell { grid-template-columns: 230px minmax(0, 1fr); }
  .quote-resize-handle { display: none; }
  .right-panel { grid-column: 1 / -1; display: grid; grid-template-columns: 1fr 1.25fr; column-gap: 18px; align-items: start; border-top: 1px solid var(--line); border-left: 0; }
  .right-panel .summary-head { grid-column: 1 / -1; }.right-panel .selection-card { grid-column: 1; }.right-panel .metric-grid { grid-column: 1; }.right-panel .quote-headline, .right-panel .quote-lines, .right-panel .totals-card, .right-panel .full, .right-panel .price-note { grid-column: 2; }.right-panel .quote-headline { margin-top: 17px; }.right-panel .quote-lines { max-height: 170px; }
  .plan-stage { min-height: 550px; padding: 24px; }
}
@media (max-width: 820px) {
  .topbar { flex-wrap: wrap; gap: 12px 20px; padding: 13px 16px; }.brand { min-width: 205px; }.project-context { order: 3; flex-basis: 100%; }.top-actions { margin-left: auto; }.company-control { min-width: 170px; }.top-actions .ghost:not(.prices-button) { display: none; }
  .steps { padding: 0 12px; overflow-x: auto; }.step { flex: 0 0 auto; padding: 0 12px; }
  .app-shell { grid-template-columns: 1fr; }.left-panel { border-right: 0; border-bottom: 1px solid var(--line); }.work-catalog { grid-template-columns: repeat(2, minmax(0,1fr)); }.plan-tools { grid-template-columns: repeat(2, minmax(0,1fr)); }.left-note { display: none; }.visit-checklist { grid-template-columns: 1fr; }
  .canvas-toolbar { align-items: flex-start; flex-direction: column; }.page-control { width: 100%; margin-left: 0; flex-wrap: wrap; }.page-select-control { flex: 1; min-width: 180px; }.toolbar-actions { width: 100%; flex-wrap: wrap; }.canvas-button span { display: inline; }.plan-stage { min-height: 450px; padding: 18px 11px 38px; }.canvas-footer { align-items: flex-start; flex-direction: column; padding: 9px 14px; }
  .right-panel { display: block; }.right-panel .quote-headline { margin-top: 22px; }.right-panel .quote-lines { max-height: none; }.custom-item-form { grid-template-columns: repeat(2, minmax(0, 1fr)); }.custom-item-form label:first-child, .custom-item-form .button { grid-column: 1 / -1; }
  .project-form-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }.project-photo-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }.quote-settings { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 520px) {
  body { font-size: 14px; }.brand-copy small, .prototype-badge { display: none; }.company-control { min-width: 154px; }.company-control select { font-size: 11px; }.top-actions .primary { padding: 9px 10px; font-size: 12px; }.work-catalog { grid-template-columns: 1fr; }.plan-tools { grid-template-columns: 1fr; }.work-filters { scrollbar-width: none; }.canvas-button span { display: none; }.canvas-button { padding: 8px; }.page-select-control { min-width: 0; }.toolbar-title strong { font-size: 15px; }.plan-stage { min-height: 340px; }.placement-tip { max-width: calc(100% - 22px); overflow: hidden; text-overflow: ellipsis; }.selection-fields { grid-template-columns: repeat(2, 1fr); }.selection-fields label:last-child { grid-column: 1 / -1; }.bulk-measure-grid, .bulk-work-grid { grid-template-columns: 1fr; }.dialog-table { min-width: 620px; }.dialog-table-wrap { overflow-x: auto; }.dialog-actions { flex-direction: column-reverse; }.dialog-actions .button { width: 100%; }.prices-dialog-body { padding: 16px; }.prices-section-head { flex-direction: column; }.prices-count { align-self: flex-start; }.custom-item-form { grid-template-columns: 1fr; }.custom-item-form label:first-child, .custom-item-form .button { grid-column: auto; }
}
.quote-plan-page { display: flex; flex-direction: column; gap: 14px; margin: 20px 24px; padding: 18px; border: 1px solid #d2dbe7; background: white; color: #172033; }
.quote-plan-heading { display: flex; justify-content: space-between; gap: 12px; align-items: flex-start; }
.quote-plan-heading small, .quote-plan-heading p, .quote-plan-heading > span { margin: 0; font-size: 11px; color: #52647f; }
.quote-plan-heading > span { white-space: nowrap; }
.quote-plan-heading h2 { margin: 5px 0; font-size: 20px; }
.quote-plan-drawing { display: block; width: 100%; height: auto; aspect-ratio: 273 / 140; min-height: 0; }
.quote-plan-footer { display: flex; justify-content: space-between; gap: 12px; font-size: 10px; color: #52647f; }
@page { size: A4 portrait; margin: 12mm; }
@page quotePlan { size: A4 landscape; margin: 12mm; }
.deviseur-selection { margin: 16px 0; padding: 12px; border: 1px solid var(--line); border-radius: 10px; background: #f8faff; }
.deviseur-label, .deviseur-form label { display: grid; gap: 6px; font-size: 14px; }
.deviseur-label { margin: 12px 0 8px; }
.deviseur-label select, .deviseur-form input:not([type=checkbox]), .deviseur-form select { width: 100%; min-width: 0; padding: 9px; border: 1px solid #cbd5e1; border-radius: 6px; background: white; color: #172033; font: inherit; }
.deviseur-actions, .deviseur-shortcuts, .deviseur-tabs { display: flex; flex-wrap: wrap; gap: 8px; }
.deviseur-shortcuts { margin: 14px 0; }.deviseur-shortcuts .mini-button { flex: 1 1 40%; font-size: 14px; }
.cloud-status { display: grid; gap: 8px; margin-top: 12px; color: #52647f; font-size: 12px; }.cloud-status button { justify-self: start; }
.deviseur-feedback { margin: 0; padding: 12px 20px; background: #eaf1fc; color: #173b82; font-size: 14px; }
.wall-photos { margin-top: 14px; }.wall-photos summary { cursor: pointer; font-size: 14px; margin-bottom: 12px; }
.wall-photo-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 8px; margin-top: 12px; }.wall-photo-grid figure { margin: 0; }.wall-photo-grid img { width: 100%; height: 100px; object-fit: cover; border-radius: 6px; }.wall-photo-grid figcaption { overflow-wrap: anywhere; font-size: 12px; }.wall-photo-grid button { margin-top: 6px; }
.deviseur-dialog { width: min(1000px,calc(100vw - 24px)); }.deviseur-tabs { padding: 14px 20px; border-bottom: 1px solid var(--line); }.deviseur-tabs button { padding: 10px 12px; border: 1px solid #cbd5e1; border-radius: 7px; background: white; color: #334155; font: inherit; font-size: 14px; cursor: pointer; }.deviseur-tabs [aria-pressed=true] { color: white; background: #2563eb; border-color: #2563eb; }
#deviseurBody, #connectionBody { padding: 20px; font-size: 16px; line-height: 1.5; }#deviseurBody > p { margin-top: 0; }#deviseurBody h3 { margin: 0 0 12px; }#deviseurBody .mini-button { font-size: 14px; }
.bundle-list, .check-list, .supply-list, .version-list { display: grid; gap: 12px; margin: 18px 0; }.bundle-list article, .check-list article, .supply-list article, .version-list article { border: 1px solid #d5deea; border-radius: 10px; padding: 16px; }.bundle-list p,.version-list p { font-size: 14px; color: #52647f; }.deviseur-form { display: grid; gap: 12px; }.deviseur-form > button { justify-self: start; }.bundle-items { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 10px; }.bundle-items label { display: flex; align-items: center; gap: 8px; }.bundle-items input,.check-list input { width: 18px; height: 18px; flex-shrink: 0; }.check-list label { display: flex; align-items: flex-start; gap: 10px; }.check-list small { display: block; color: #52647f; margin-top: 5px; }.check-list .mini-button { margin: 10px 0 0 28px; }.material-form { grid-template-columns: repeat(2,minmax(0,1fr)); }.supply-list h4 { margin: 0; }
#versionPreview { width: min(1100px,calc(100vw - 24px)); }#versionPreview iframe { display: block; width: 100%; height: 65vh; border: 0; background: white; }
.canvas-toolbar { flex-wrap: wrap; }.page-control { flex-wrap: wrap; }
.toolbar-actions { flex-wrap: wrap; }
.app-shell.quote-collapsed { grid-template-columns: 252px minmax(0,1fr); }
.app-shell.quote-collapsed > .quote-resize-handle { display: none; }
.app-shell.quote-collapsed > .right-panel { display: none; }
#toggleQuotePanel span { display: inline; }
#toggleQuotePanel[aria-expanded=false], #fitPlanBtn[aria-pressed=true] { color: #1748b5; background: #eaf1fc; border-color: #a9bee9; }
.canvas-button:disabled { opacity: .45; cursor: not-allowed; }
@media(max-width:1180px) { .app-shell.quote-collapsed { grid-template-columns: 230px minmax(0,1fr); }.plan-stage { height: min(70vh,650px); min-height: 300px; } }
@media(max-width:800px) { .marketing-hero { grid-template-columns: 1fr; min-height: auto; padding: 70px 0 55px; }.marketing-copy h1 { font-size: clamp(40px, 12vw, 60px); }.marketing-preview { max-width: 620px; width: 100%; transform: none; }.marketing-features { grid-template-columns: 1fr; margin-bottom: 44px; }.marketing-bottom { display: grid; }.marketing-plans { justify-content: flex-start; }.marketing-footer { align-items: flex-start; flex-direction: column; gap: 9px; } }
@media(max-width:820px) { .app-shell.quote-collapsed { grid-template-columns: 1fr; } }
@media(max-width:980px) { .save-indicator { display: none; } }
@media(max-width: 1180px) { #deviseurSelection { grid-column: 1; }.progress-card, .deviseur-shortcuts, .cloud-status { grid-column: 2; } }
@media(max-width: 600px) { .bundle-items,.material-form { grid-template-columns: 1fr; } #deviseurBody { padding: 14px; } }
.selection-title-actions { display: flex; align-items: center; justify-content: flex-end; gap: 5px; flex-wrap: wrap; }
.door-swing-help { margin-top: -3px; color: #52647d; font-size: 11px; }
.measure-only-banner { display: flex; justify-content: space-between; gap: 16px; margin-bottom: 14px; padding: 10px 13px; border: 1px solid #c8d9f5; border-radius: 10px; background: #eef5ff; color: #1748b5; font-size: 12px; }
.visit-issues { display: flex; flex-direction: column; gap: 4px; margin-top: 12px; padding: 10px 12px; border-radius: 10px; background: #fff8e8; color: #73500b; font-size: 12px; }
.visit-issues ul, .summary-issues { margin: 2px 0 0 18px; padding: 0; }
.visit-issues .visit-ok, .visit-ok { color: #16734a; }
.project-section-help { margin: -2px 0 10px; color: #6f7d90; font-size: 12px; }
.visit-summary-dialog { width: min(980px, calc(100vw - 32px)); max-width: 980px; }
.visit-summary-content { padding: 22px 26px; }
.visit-summary-meta { display: flex; align-items: flex-start; justify-content: space-between; gap: 18px; padding-bottom: 16px; border-bottom: 1px solid #e1e7ef; }
.visit-summary-meta h1 { margin: 3px 0 5px; font-size: 24px; }
.visit-summary-meta p, .visit-summary-section p { margin: 4px 0; color: #52647d; font-size: 13px; }
.summary-mode { padding: 7px 10px; border-radius: 999px; background: #eef5ff; color: #1748b5; font-size: 12px; white-space: nowrap; }
.visit-summary-section { margin-top: 18px; }
.visit-summary-section h2 { margin: 0 0 9px; font-size: 15px; color: #172033; }
.visit-summary-card { margin: 8px 0; padding: 11px 13px; border: 1px solid #e1e7ef; border-radius: 10px; break-inside: avoid; }
.visit-summary-card-head { display: flex; justify-content: space-between; gap: 12px; align-items: baseline; }
.visit-summary-card h3 { margin: 0; font-size: 13px; }
.visit-summary-card-head span { color: #7c8999; font-size: 11px; }
.visit-summary-card p { margin: 5px 0 0; }
.muted { color: #8995a5 !important; }
.summary-checks { display: flex; gap: 7px; flex-wrap: wrap; }
.summary-checks span { padding: 6px 9px; border-radius: 8px; font-size: 12px; }
.summary-checks .is-done { background: #eaf8f0; color: #16734a; }
.summary-checks .is-missing { background: #fff3df; color: #8b5b0a; }
.welcome-dialog { width: min(520px, calc(100vw - 32px)); max-width: 520px; }
.welcome-body { padding: 22px 26px 8px; }
.welcome-lead { margin: 0 0 20px; color: #344054; font-size: 16px; line-height: 1.45; }
.welcome-steps { display: grid; gap: 11px; }
.welcome-steps > div { display: flex; align-items: center; gap: 11px; padding: 10px; border: 1px solid #e4e8ef; border-radius: 10px; background: #fbfcfe; }
.welcome-steps b { display: grid; place-items: center; width: 28px; height: 28px; flex: 0 0 auto; border-radius: 50%; color: #fff; background: #2563eb; }
.welcome-steps span { display: grid; gap: 2px; }
.welcome-steps strong { font-size: 13px; }
.welcome-steps small { color: #667085; font-size: 12px; }
.welcome-tip { margin: 18px 0 8px; padding: 10px 11px; border-radius: 8px; color: #1748b5; background: #eef5ff; font-size: 12px; line-height: 1.4; }
.progress-card { margin-top: 14px; padding: 14px; border: 1px solid #cbd8e8; border-radius: 11px; background: #f8fbff; }
.progress-card p { margin: 8px 0 12px; color: #59687a; font-size: 12px; line-height: 1.4; }
.progress-card-head, .progress-totals > div, .progress-task { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.progress-card-head strong { display: block; margin-top: 3px; font-size: 14px; }.progress-status { color: #16734a; font-weight: 800; }
.progress-bar { height: 8px; margin: 12px 0; overflow: hidden; border-radius: 999px; background: #dfe7ef; }.progress-bar i { display: block; height: 100%; border-radius: inherit; background: #21a366; transition: width .2s ease; }
.progress-totals { display: grid; gap: 6px; padding-bottom: 10px; border-bottom: 1px solid #dce5ef; font-size: 12px; }.progress-totals small { color: #6b7788; line-height: 1.35; }
.progress-list { max-height: 360px; overflow: auto; }.progress-list details { padding: 9px 0; border-bottom: 1px solid #e1e8f0; }.progress-list summary { cursor: pointer; font-weight: 700; }.progress-list summary small { color: #7a8798; font-weight: 400; }
.progress-wall { display: grid; gap: 6px; margin-top: 9px; }.progress-wall > b { color: #516075; font-size: 11px; text-transform: uppercase; letter-spacing: .04em; }
.progress-task { padding: 7px; border-radius: 8px; background: #fff; }.progress-task > input { width: 19px; height: 19px; flex: 0 0 auto; accent-color: #21a366; }.progress-task > span { min-width: 0; flex: 1; font-size: 12px; }.progress-task small { display: block; margin-top: 2px; color: #7a8798; }.progress-task select { min-width: 72px; padding: 6px; border: 1px solid #cbd5e1; border-radius: 6px; background: #fff; }.progress-reopen { margin-top: 10px; }
.worker-mode .prices-button, .worker-mode .client-mode-button, .worker-mode .quote-headline, .worker-mode #quoteLines, .worker-mode .totals-card, .worker-mode .deviseur-shortcuts, .worker-mode #quoteBtn, .worker-mode .price-note { display: none !important; }
.worker-mode .progress-card { margin-top: 18px; border-color: #acd9be; background: #f5fcf8; }
.site-followup { margin-top:14px;padding:14px;border:1px solid #cbd8e8;border-radius:11px;background:#fff; }.site-followup[hidden]{display:none}.followup-title{display:flex;justify-content:space-between;gap:10px;align-items:center;margin-bottom:8px}.followup-title strong{display:block;margin-top:3px}.followup-title>span{font-size:11px;color:#667085}.site-followup details{padding:10px 0;border-top:1px solid #e1e8f0}.site-followup summary{cursor:pointer;font-size:13px;font-weight:750}.site-followup summary small{float:right;color:#667085}.site-followup p{font-size:11px;color:#667085}.followup-list{display:grid;gap:6px;margin:9px 0}.followup-list label{display:flex;gap:8px;align-items:center;padding:7px;border-radius:7px;background:#f8fafc;font-size:12px}.followup-list label span{flex:1}.followup-list small{display:block;color:#7b8798}.followup-list .done{text-decoration:line-through;color:#718096}.site-followup form{display:grid;grid-template-columns:minmax(0,1fr) 95px auto;gap:6px;margin-top:8px}.site-followup form[data-add-reserve]{grid-template-columns:minmax(0,1fr) auto}.site-followup input,.site-followup textarea{min-width:0;padding:7px;border:1px solid #cbd5e1;border-radius:6px;background:#fff}.billing-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:5px;margin-top:9px}.billing-summary span{padding:7px;border-radius:7px;background:#f2f5f8;color:#667085;font-size:10px}.billing-summary strong{display:block;margin-top:3px;color:#172033;font-size:12px}.followup-reception{display:grid;gap:8px;margin-top:9px}.followup-reception label{display:grid;gap:4px;font-size:11px;font-weight:700}.followup-reception .reception-check{display:flex;align-items:center}.followup-ok{color:#16734a!important}.worker-mode .site-followup form,.worker-mode .site-followup [data-open-project]{display:none}.worker-mode .site-followup{border-color:#acd9be;background:#f5fcf8}@media(max-width:520px){.site-followup form{grid-template-columns:1fr}.billing-summary{grid-template-columns:1fr}}
.worker-mode .left-panel, .worker-mode #selectionCard, .worker-mode #deviseurSelection, .worker-mode #quickActionsCard, .worker-mode .company-control, .worker-mode #quickVisitBtn, .worker-mode #projectBtn, .worker-mode #saveBtn, .worker-mode .steps, .worker-mode .page-action, .worker-mode #groupSelectBtn, .worker-mode #uploadBtn, .worker-mode #undoBtn, .worker-mode #toggleQuotePanel { display: none !important; }
.worker-mode .app-shell { grid-template-columns: minmax(420px, 1fr) 10px var(--quote-panel-width); min-height: calc(100vh - 78px); }
.worker-mode #plan { pointer-events: none; }
@media(max-width:1180px) { .worker-mode .app-shell { grid-template-columns: 1fr; }.worker-mode .quote-resize-handle { display: none; }.worker-mode .right-panel { grid-column: 1; display: block; } }
@media print {
  #deviseurDialog, #connectionDialog, #versionPreview { display: none !important; }
  #dialogContent, .dialog-table-wrap { overflow: visible; }
  .dialog-table { min-width: 0; }
  .quote-room-heading { break-after: avoid; }
  .dialog-table tr { break-inside: avoid; }
  body { background: #fff; }.topbar, .steps, .app-shell, .left-panel, .canvas-section, .right-panel, dialog::backdrop, #projectDialog, #pricesDialog, .toast { display: none !important; }
  #quoteDialog { display: block; position: static; width: 100%; max-width: none; height: auto; max-height: none; overflow: visible; margin: 0; border-radius: 0; box-shadow: none; }
  .dialog-actions, .dialog-head, .signature-section .mini-button { display: none; }
  .quote-settings input, .quote-settings textarea { border: 0; padding: 0; background: transparent; }
  .signature-section, .quote-totals { break-inside: avoid; }
  .quote-plan-page { page: quotePlan; break-before: page; break-inside: avoid; box-sizing: border-box; height: 180mm; margin: 0; padding: 0; border: 0; print-color-adjust: exact; -webkit-print-color-adjust: exact; }
  .quote-plan-heading, .quote-plan-footer { flex: 0 0 auto; }
  .quote-plan-drawing { flex: 1 1 0; height: 0; aspect-ratio: auto; }
  body.printing-visit-summary .topbar, body.printing-visit-summary .steps, body.printing-visit-summary .app-shell, body.printing-visit-summary dialog::backdrop, body.printing-visit-summary #projectDialog, body.printing-visit-summary #pricesDialog, body.printing-visit-summary #quoteDialog, body.printing-visit-summary .toast { display: none !important; }
  body.printing-visit-summary #visitSummaryDialog { display: block !important; position: static; width: 100%; max-width: none; max-height: none; overflow: visible; margin: 0; border: 0; border-radius: 0; box-shadow: none; }
  body.printing-visit-summary #visitSummaryDialog .dialog-head, body.printing-visit-summary #visitSummaryDialog .dialog-actions { display: none; }
  body.printing-visit-summary .visit-summary-content { padding: 0; }
}
