:root{--bg: #0f1113;--panel: #16191c;--panel-2: #1c2024;--line: #2a2f35;--text: #e8e6e1;--muted: #8d939a;--accent: #c9a96e;--accent-ink: #15120c;--pt: #22d3ee;--pt-sel: #facc15;--pt-auto: #a78bfa;--ok: #4ade80;--bad: #f87171;--radius: 10px;font-family:Inter,ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:14px;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased}*{box-sizing:border-box}body{margin:0;background:var(--bg)}h1,h2{margin:0;font-weight:600;letter-spacing:-.01em}h1{font-size:22px}h2{font-size:15px}a{color:inherit;text-decoration:none}.muted{color:var(--muted)}.small{font-size:12px}.error{color:var(--bad)}.pad{padding:16px}kbd{border:1px solid var(--line);border-radius:4px;padding:0 4px;font-size:11px}.btn{border:1px solid var(--line);background:var(--panel-2);color:var(--text);border-radius:8px;padding:8px 14px;font:inherit;cursor:pointer}.btn:hover{border-color:#3b424a}.btn:disabled{opacity:.5;cursor:default}.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);font-weight:600}.btn.ghost{background:transparent}.btn.small{padding:5px 10px;font-size:12px}.btn.wide{width:100%;margin-top:8px}.btn.icon{width:34px;height:34px;padding:0;font-size:16px}input,select,textarea{background:var(--bg);border:1px solid var(--line);color:var(--text);border-radius:8px;padding:8px 10px;font:inherit}input:focus,select:focus{outline:2px solid color-mix(in srgb,var(--accent) 50%,transparent);border-color:var(--accent)}.field{display:flex;flex-direction:column;gap:6px;margin:12px 0}.field span{font-size:12px;color:var(--muted)}.check{display:flex;align-items:center;gap:8px;cursor:pointer}.tag{margin-left:8px;font-size:11px;padding:1px 7px;border-radius:999px;border:1px solid var(--line);color:var(--muted);vertical-align:middle}.splash{display:grid;place-items:center;height:100vh;letter-spacing:.4em;color:var(--muted)}.topbar{height:52px;display:flex;align-items:center;justify-content:space-between;padding:0 20px;border-bottom:1px solid var(--line);background:var(--panel)}.brand{display:flex;align-items:baseline;gap:8px}.brand-mark{font-weight:700;letter-spacing:.32em;color:var(--accent)}.brand-mark.big{font-size:28px;margin-bottom:4px}.brand-sub{font-size:11px;color:var(--muted);letter-spacing:.1em}.topbar-right{display:flex;gap:12px;align-items:center}.login{min-height:100vh;display:grid;place-items:center;padding:16px}.login-card{width:100%;max-width:360px;background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:32px}.code-input{font-size:24px;letter-spacing:.4em;text-align:center}.page{max-width:1040px;margin:0 auto;padding:32px 20px}.page-head{display:flex;justify-content:space-between;align-items:flex-end;margin-bottom:20px}.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:20px;margin-bottom:20px}.form-grid{display:grid;grid-template-columns:2fr 1fr 1fr;gap:0 16px;align-items:end}.form-grid .check{grid-column:1 / -1;margin:4px 0 8px}.form-actions{grid-column:1 / -1;display:flex;gap:8px;justify-content:flex-end}.empty{text-align:center;padding:64px 0;border:1px dashed var(--line);border-radius:var(--radius)}.table{width:100%;border-collapse:collapse}.table th{text-align:left;font-weight:500;font-size:12px;color:var(--muted);padding:8px 12px;border-bottom:1px solid var(--line)}.table td{padding:12px;border-bottom:1px solid var(--line)}.table tbody tr{cursor:pointer}.table tbody tr:hover{background:var(--panel)}.status{font-size:12px;padding:2px 8px;border-radius:999px;background:var(--panel-2);border:1px solid var(--line)}.s-ANALYZED,.s-EXPERT_VALIDATED,.s-READY_TO_SEND{color:var(--ok)}.s-PHOTOS_A_REFAIRE{color:var(--bad)}.workspace{display:flex;flex-direction:column;height:calc(100vh - 52px)}.ws-head{display:flex;align-items:center;gap:14px;padding:12px 20px;border-bottom:1px solid var(--line);flex-wrap:wrap}.ws-head h1{font-size:18px}.back{color:var(--muted);font-size:13px}.ws-head-fields{margin-left:auto;display:flex;gap:8px;align-items:center}.ws-head-fields .narrow{width:100px}.save-state{font-size:12px;color:var(--muted);min-width:100px;text-align:right}.save-state.on{color:var(--accent)}.banner{margin:0;padding:8px 20px;background:#2a1414;cursor:pointer}.ws-grid{flex:1;display:grid;grid-template-columns:270px 1fr 300px;min-height:0}.panel{background:var(--panel);overflow-y:auto;min-height:0}.panel.left{border-right:1px solid var(--line)}.panel.right{border-left:1px solid var(--line)}.tabs{display:grid;grid-template-columns:repeat(3,1fr);border-bottom:1px solid var(--line);position:sticky;top:0;background:var(--panel);z-index:1}.tab{background:none;border:0;border-bottom:2px solid transparent;color:var(--muted);padding:12px 4px 10px;font:inherit;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:2px}.tab.on{color:var(--text);border-bottom-color:var(--accent)}.tab-count{font-size:11px;color:var(--muted)}.hint{padding:12px 16px;font-size:13px;line-height:1.45;border-bottom:1px solid var(--line);min-height:64px}.lm-list{padding:8px 8px 24px}.lm-group-title{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);padding:12px 8px 4px}.lm-item{width:100%;display:flex;align-items:center;gap:10px;background:none;border:1px solid transparent;color:var(--text);padding:6px 8px;border-radius:6px;font:inherit;font-size:13px;cursor:pointer;text-align:left}.lm-item:hover{background:var(--panel-2)}.lm-item.active{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 10%,transparent)}.lm-item.sel{border-color:var(--pt-sel)}.lm-label{flex:1}.lm-replace{color:var(--muted);font-size:14px;padding:0 4px}.lm-replace:hover{color:var(--accent)}.dot{width:9px;height:9px;border-radius:50%;border:1.5px solid var(--muted);flex:none}.dot.ok{background:var(--pt);border-color:var(--pt)}.dot.auto{background:var(--pt-auto);border-color:var(--pt-auto)}.stage{position:relative;display:flex;flex-direction:column;min-height:0;background:#0a0b0c}.editor{position:relative;flex:1;min-height:0}.editor-svg{width:100%;height:100%;display:block;cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none}.editor-svg.placing{cursor:crosshair}.editor-tools{position:absolute;top:12px;right:12px;display:flex;flex-direction:column;gap:6px}.stage-bar{display:flex;align-items:center;gap:16px;padding:10px 16px;border-top:1px solid var(--line);background:var(--panel)}.stage-bar .file-btn{margin-left:auto}.file-btn input,.dropzone input{display:none}.dropzone{margin:40px;flex:1;border:1.5px dashed var(--line);border-radius:14px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;cursor:pointer}.dropzone:hover{border-color:var(--accent)}.qc{display:flex;align-items:center;gap:8px}.chip{background:none;border:1px solid var(--line);color:var(--muted);border-radius:999px;padding:3px 10px;font:inherit;font-size:12px;cursor:pointer}.chip.ok{color:var(--ok);border-color:var(--ok)}.chip.bad{color:var(--bad);border-color:var(--bad)}.guide{stroke:#ffffff8c;stroke-dasharray:6 6;vector-effect:non-scaling-stroke}.guide.head{stroke:#c9a96eb3;stroke-dasharray:none}.guide.plumb{stroke:#c9a96ee6}.guide-label{fill:var(--accent);font-weight:600}.seg{stroke:var(--pt);stroke-opacity:.55;stroke-linecap:round}.seg.strong{stroke:var(--pt-sel);stroke-opacity:1}.pt-hit{fill:transparent;cursor:move}.pt-dot{fill:var(--pt);stroke:#000}.pt.auto .pt-dot{fill:var(--pt-auto)}.pt.hl .pt-dot{fill:var(--pt-sel)}.pt.sel .pt-dot{fill:var(--pt-sel);stroke:#fff}.pt-label{fill:#fff;paint-order:stroke;stroke:#000c;stroke-width:3px;stroke-linejoin:round;font-weight:600}.measures{padding:16px}.measures-head{display:flex;justify-content:space-between;align-items:baseline}.meter{height:3px;background:var(--line);border-radius:2px;margin:10px 0 8px;overflow:hidden}.meter div{height:100%;background:var(--accent)}.m-group-title{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);padding:14px 0 4px}.m-row{display:flex;justify-content:space-between;gap:8px;padding:5px 6px;border-radius:6px;font-size:13px;cursor:default}.m-row:hover{background:var(--panel-2)}.m-row.missing .m-value,.m-row.other-view .m-label{color:var(--muted)}.m-value{font-variant-numeric:tabular-nums;white-space:nowrap}.measures-foot{margin-top:16px;border-top:1px solid var(--line);padding-top:8px}@media (max-width: 1100px){.ws-grid{grid-template-columns:230px 1fr}.panel.right{grid-column:1 / -1;border-left:0;border-top:1px solid var(--line)}.workspace{height:auto}.stage{min-height:70vh}}@media (max-width: 720px){.ws-grid,.form-grid{grid-template-columns:1fr}.ws-head-fields{margin-left:0;flex-wrap:wrap}}
