@font-face{font-family:DM Sans;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/7ab938503e4547a1-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:DM Sans;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/13971731025ec697-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:DM Sans;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/7ab938503e4547a1-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:DM Sans;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/13971731025ec697-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:DM Sans;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/7ab938503e4547a1-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:DM Sans;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/13971731025ec697-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:DM Sans;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/7ab938503e4547a1-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:DM Sans;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/13971731025ec697-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:DM Sans Fallback;src:local("Arial");ascent-override:94.90%;descent-override:29.66%;line-gap-override:0.00%;size-adjust:104.53%}.__className_0eeb07{font-family:DM Sans,DM Sans Fallback;font-style:normal}.__variable_0eeb07{--font-dm-sans:"DM Sans","DM Sans Fallback"}@font-face{font-family:DM Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/64418ffc17e50301-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:DM Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/0e96d314a90a6138-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:DM Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/ba43ea3467e29870-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:DM Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/b7ea2ab4a8ad1f81-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:DM Mono Fallback;src:local("Arial");ascent-override:73.71%;descent-override:23.03%;line-gap-override:0.00%;size-adjust:134.59%}.__className_9ef920{font-family:DM Mono,DM Mono Fallback;font-style:normal}.__variable_9ef920{--font-dm-mono:"DM Mono","DM Mono Fallback"}*{box-sizing:border-box;margin:0;padding:0}:root{--bg:#f5f4f0;--panel:#ffffff;--border:#d8d5cc;--text:#1a1a1a;--text-dim:#888880;--accent:#FFCA42;--accent-dk:#c9960a;--dim-col:#ED001D;--black:#1a1a1a;--white:#ffffff;--mid:#e8e6e0}body,html{height:100%;overflow:hidden;font-family:var(--font-dm-sans),"DM Sans",sans-serif;background:var(--bg);color:var(--text)}.app{display:grid;grid-template-columns:260px 1fr;grid-template-rows:48px 1fr 36px;height:100vh;width:100vw}header{grid-column:1/-1;justify-content:space-between;padding:0 20px;background:var(--black);border-bottom:3px solid var(--accent)}.logo,header{display:flex;align-items:center}.logo{gap:10px}.logo-mark{width:26px;height:26px;background:var(--accent);display:grid;place-items:center;font-family:var(--font-dm-mono),"DM Mono",monospace;font-size:13px;font-weight:500;color:var(--black);border-radius:3px}.logo-name{font-size:14px;font-weight:700;letter-spacing:1.5px;color:#fff;text-transform:uppercase}.logo-sub{color:#666;letter-spacing:2px}.header-right,.logo-sub{font-size:10px;font-family:var(--font-dm-mono),"DM Mono",monospace}.header-right{color:#555;letter-spacing:1px}.sidebar{background:var(--panel);border-right:1px solid var(--border);display:flex;flex-direction:column;overflow:hidden}.sidebar-inner{flex:1 1;overflow-y:auto;overflow-x:hidden;scrollbar-width:thin;scrollbar-color:var(--border) transparent}.sidebar-inner::-webkit-scrollbar{width:4px}.sidebar-inner::-webkit-scrollbar-thumb{background:var(--border);border-radius:2px}.sec{padding:14px 16px;border-bottom:1px solid var(--mid)}.sec-title{font-size:9px;letter-spacing:3px;text-transform:uppercase;color:var(--text-dim);margin-bottom:10px;display:flex;align-items:center;gap:6px}.sec-title:before{content:"";width:10px;height:2px;background:var(--accent);border-radius:1px}.field{margin-bottom:10px}.field:last-child{margin-bottom:0}.field>label{display:flex;justify-content:space-between;align-items:baseline;font-size:11px;color:var(--text-dim);margin-bottom:4px;font-weight:500}.field>label .val{font-family:var(--font-dm-mono),"DM Mono",monospace;font-size:11px;color:var(--black);font-weight:500}.irow{display:flex;align-items:stretch;border:1.5px solid var(--border);border-radius:4px;background:var(--bg);overflow:hidden;transition:border-color .15s}.irow:focus-within{border-color:var(--black)}.irow input[type=number],.irow input[type=password],.irow input[type=text]{flex:1 1;border:none;outline:none;background:transparent;padding:6px 8px;font-family:var(--font-dm-mono),"DM Mono",monospace;font-size:14px;color:var(--black);font-weight:500;-moz-appearance:textfield}.irow input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none}.irow .unit{padding:0 8px;font-size:10px;color:var(--text-dim);font-family:var(--font-dm-mono),"DM Mono",monospace;background:var(--mid);border-left:1px solid var(--border);display:flex;align-items:center}input[type=range]{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;height:2px;background:var(--border);border-radius:1px;outline:none;cursor:pointer;margin-top:6px}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:14px;height:14px;background:var(--black);border-radius:50%;border:2px solid var(--accent);cursor:pointer}input[type=range]::-moz-range-thumb{width:14px;height:14px;background:var(--black);border-radius:50%;border:2px solid var(--accent);cursor:pointer}.tog-row{display:flex;align-items:center;justify-content:space-between;font-size:11px;color:var(--text-dim);padding:5px 0}.tog{position:relative;width:30px;height:16px;flex-shrink:0}.tog input{opacity:0;width:0;height:0}.tog-track{inset:0;border-radius:16px;background:var(--border);cursor:pointer}.tog-track,.tog-track:before{position:absolute;transition:.2s}.tog-track:before{content:"";width:10px;height:10px;left:3px;top:3px;background:#fff;border-radius:50%}.tog input:checked+.tog-track{background:var(--black)}.tog input:checked+.tog-track:before{transform:translateX(14px);background:var(--accent)}.catalog-view,.config-view{display:flex;flex-direction:column;height:100%}.cat-header{padding:14px 16px 10px;font-size:9px;letter-spacing:3px;text-transform:uppercase;color:var(--text-dim);display:flex;align-items:center;gap:6px}.cat-header:before{content:"";width:10px;height:2px;background:var(--accent);border-radius:1px}.cat-group{padding:0 10px 8px}.cat-label{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:1.5px;color:var(--text-dim);padding:10px 6px 6px}.product-item{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:6px;cursor:pointer;transition:background .15s,border-color .15s;border:1.5px solid transparent}.product-item:hover{background:var(--bg);border-color:var(--border)}.product-item.active{background:var(--bg);border-color:var(--accent)}.product-item.disabled{opacity:.35;cursor:default;pointer-events:none}.product-picto{width:36px;height:36px;border-radius:4px;background:var(--bg);border:1px solid var(--border);display:grid;place-items:center;flex-shrink:0}.product-item.active .product-picto{background:var(--black);border-color:var(--black)}.product-item.active .product-picto svg{stroke:var(--accent)}.product-info{flex:1 1;min-width:0}.product-name{font-size:11px;font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.product-sub{font-size:9px;color:var(--text-dim);font-family:var(--font-dm-mono),"DM Mono",monospace}.schema-block{background:var(--bg);border:1.5px solid var(--border);border-radius:4px;padding:10px 12px}.prop-row{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}.prop-row:last-child{margin-bottom:0}.prop-label{font-size:11px;color:var(--text-dim);display:flex;align-items:center;gap:6px}.prop-badge{font-size:11px;color:var(--black);background:var(--mid);padding:1px 6px;border-radius:2px;font-weight:500}.prop-badge,.prop-calc{font-family:var(--font-dm-mono),"DM Mono",monospace}.prop-calc{font-size:10px;color:var(--accent-dk)}.prop-dot{width:6px;height:6px;background:var(--dim-col);border-radius:50%;flex-shrink:0}.back-btn{display:flex;align-items:center;gap:6px;padding:10px 16px;font-size:10px;font-weight:600;color:var(--text-dim);cursor:pointer;border-bottom:1px solid var(--mid);letter-spacing:1px;text-transform:uppercase;transition:color .15s}.back-btn:hover{color:var(--text)}.scale-badge{margin:12px 16px;background:var(--black);border-radius:4px;padding:10px 12px;display:flex;align-items:center;justify-content:space-between}.scale-badge .lbl{font-size:10px;color:#666;letter-spacing:2px;text-transform:uppercase}.scale-badge .sv{font-size:20px;color:var(--accent);font-weight:500}.scale-badge .sr,.scale-badge .sv{font-family:var(--font-dm-mono),"DM Mono",monospace}.scale-badge .sr{font-size:13px;color:#aaa}.btn-export{margin:0 16px 14px;padding:10px;width:calc(100% - 32px);background:var(--accent);border:none;border-radius:4px;font-family:var(--font-dm-sans),"DM Sans",sans-serif;font-size:12px;font-weight:700;letter-spacing:2px;text-transform:uppercase;color:var(--black);cursor:pointer;transition:.15s}.btn-export:hover{background:var(--accent-dk);color:#fff}.btn-export:active{transform:scale(.98)}.canvas-area{background:var(--bg);display:flex;flex-direction:column;overflow:hidden}.canvas-bar{display:flex;align-items:center;gap:12px;padding:0 16px;height:34px;flex-shrink:0;background:var(--panel);border-bottom:1px solid var(--border);font-family:var(--font-dm-mono),"DM Mono",monospace;font-size:10px;color:var(--text-dim)}.bar-dot{width:6px;height:6px;background:var(--accent);border-radius:50%}.bar-sep{width:1px;height:14px;background:var(--border)}.svg-wrap{flex:1 1;display:flex;align-items:center;justify-content:center;padding:20px;overflow:hidden;position:relative}.svg-wrap:before{content:"";position:absolute;inset:0;background-image:radial-gradient(circle,#c8c5bc 1px,transparent 0);background-size:24px 24px;pointer-events:none;opacity:.6}#plan-svg{max-width:100%;max-height:100%;filter:drop-shadow(0 4px 24px rgba(0,0,0,.1))}.empty-state{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;z-index:2;pointer-events:none;gap:12px}.empty-state svg{opacity:.25}.empty-state .em-label{font-size:13px;color:var(--text-dim);letter-spacing:1px}.empty-state .em-sub{font-size:11px;color:var(--border)}footer{grid-column:1/-1;gap:20px;padding:0 20px;background:var(--black);font-family:var(--font-dm-mono),"DM Mono",monospace;font-size:10px;color:#555}footer,footer .fi{display:flex;align-items:center}footer .fi{gap:6px}footer .fi .v{color:var(--accent);transition:opacity .2s}footer .fsep{width:1px;height:14px;background:#333}.ral-input-row{display:flex;align-items:center;gap:8px;border:1.5px solid var(--border);border-radius:4px;background:var(--bg);padding:4px 8px;transition:border-color .15s}.ral-input-row:focus-within{border-color:var(--black)}.ral-swatch{width:22px;height:22px;border-radius:3px;border:1px solid var(--border);flex-shrink:0;transition:background .2s}.ral-input{width:50px;border:none;outline:none;background:transparent;font-family:var(--font-dm-mono),"DM Mono",monospace;font-size:14px;font-weight:500;color:var(--black);-moz-appearance:textfield}.ral-input::placeholder{color:var(--border)}.ral-input::-webkit-inner-spin-button{-webkit-appearance:none}.ral-label{flex:1 1;text-align:right;font-family:var(--font-dm-mono),"DM Mono",monospace;font-size:10px;color:var(--text-dim);white-space:nowrap}.ral-dropdown{position:absolute;top:100%;left:0;right:0;max-height:200px;overflow-y:auto;background:var(--panel);border:1.5px solid var(--border);border-top:none;border-radius:0 0 4px 4px;z-index:20;scrollbar-width:thin;scrollbar-color:var(--border) transparent}.ral-dropdown::-webkit-scrollbar{width:4px}.ral-dropdown::-webkit-scrollbar-thumb{background:var(--border);border-radius:2px}.ral-option{display:flex;align-items:center;gap:8px;padding:5px 8px;cursor:pointer;transition:background .1s}.ral-option:hover{background:var(--bg)}.ral-option.active{background:var(--mid)}.ral-option-swatch{width:16px;height:16px;border-radius:2px;border:1px solid var(--border);flex-shrink:0}.ral-option-code{font-family:var(--font-dm-mono),"DM Mono",monospace;font-size:11px;color:var(--text);font-weight:500}.ral-empty{padding:10px 8px;font-size:10px;color:var(--text-dim);text-align:center}.btn-logout{background:transparent;border:1px solid #444;border-radius:4px;padding:4px 12px;font-family:var(--font-dm-mono),"DM Mono",monospace;font-size:10px;letter-spacing:1px;text-transform:uppercase;color:#888;cursor:pointer;transition:.15s}.btn-logout:hover{border-color:var(--accent);color:var(--accent)}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--bg)}.login-card{width:340px;background:var(--panel);border:1px solid var(--border);border-radius:8px;padding:32px 28px;display:flex;flex-direction:column;gap:16px}.login-header{text-align:center;margin-bottom:8px}.login-title{font-size:16px;font-weight:700;letter-spacing:2px;color:var(--black);text-transform:uppercase}.login-sub{letter-spacing:1px;margin-top:4px}.login-label,.login-sub{font-size:11px;color:var(--text-dim)}.login-label{font-weight:500;display:flex;flex-direction:column;gap:4px}.login-error{background:#fef2f2;border:1px solid #fca5a5;border-radius:4px;padding:8px 12px;font-size:12px;color:#b91c1c;text-align:center}.login-btn{margin-top:4px;padding:10px;background:var(--accent);border:none;border-radius:4px;font-family:var(--font-dm-sans),"DM Sans",sans-serif;font-size:12px;font-weight:700;letter-spacing:2px;text-transform:uppercase;color:var(--black);cursor:pointer;transition:.15s}.login-btn:hover{background:var(--accent-dk);color:#fff}.login-btn:active{transform:scale(.98)}.login-btn:disabled{opacity:.6;cursor:wait}