/* D3D_CNC_VERSION = '2.0.4' */
:root{
  --bg:#070a0f;
  --panel:#0d1320;
  --panel-2:#111a2b;
  --panel-3:#162237;
  --text:#e8eef8;
  --muted:#8d9bb3;
  --line:rgba(255,255,255,.1);
  --accent:#ff9f1c;
  --accent-2:#31d07d;
  --danger:#ff4d5e;
  --shadow:0 18px 60px rgba(0,0,0,.35);
  --radius:18px;
}
*{box-sizing:border-box}
html,body{margin:0;min-height:100%;background:var(--bg);color:var(--text);font-family:Inter,system-ui,-apple-system,Segoe UI,Arial,sans-serif}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer}
code{background:#05070b;border:1px solid var(--line);border-radius:8px;padding:2px 6px;color:#cfe3ff}
.app-body{overflow:hidden}
.app-shell{height:100dvh;display:grid;grid-template-columns:300px minmax(420px,1fr) 370px;grid-template-rows:68px minmax(0,1fr);gap:10px;padding:10px;background:radial-gradient(circle at top left,rgba(255,159,28,.16),transparent 35%),radial-gradient(circle at bottom right,rgba(49,208,125,.12),transparent 32%),var(--bg)}
.topbar{grid-column:1/-1;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;border:1px solid var(--line);border-radius:var(--radius);background:rgba(13,19,32,.9);backdrop-filter:blur(14px);box-shadow:var(--shadow)}
.brand{display:flex;align-items:center;gap:12px;min-width:210px}
.brand-mark{width:42px;height:42px;border-radius:14px;display:grid;place-items:center;background:linear-gradient(135deg,var(--accent),#ffcc70);color:#101010;font-weight:900;letter-spacing:-1px;box-shadow:0 10px 25px rgba(255,159,28,.25)}
.brand strong{display:block;font-size:1.08rem}.brand small{display:block;color:var(--muted);font-size:.74rem;margin-top:2px}
.project-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap}
.project-actions input{width:min(260px,24vw);border:1px solid var(--line);border-radius:12px;background:#070b13;padding:10px 12px;outline:none}.project-actions input:focus{border-color:rgba(255,159,28,.65)}
.panel{min-height:0;border:1px solid var(--line);border-radius:var(--radius);background:rgba(13,19,32,.92);box-shadow:var(--shadow);overflow:hidden}.left-panel,.right-panel{overflow:auto;padding:12px}.center-panel{display:flex;flex-direction:column;min-width:0}
section{border-bottom:1px solid var(--line);padding:10px 0 14px}section:last-child{border-bottom:0}h1,h2{margin:0 0 12px}h2{font-size:.92rem;text-transform:uppercase;letter-spacing:.08em;color:#c6d5ee}.muted{color:var(--muted)}
.btn,.tool,.bit,.mini-btn,.seg,.file-btn{border:1px solid var(--line);border-radius:12px;background:var(--panel-2);color:var(--text);text-decoration:none;transition:transform .18s ease,border-color .18s ease,background .18s ease,box-shadow .18s ease}.btn{display:inline-flex;align-items:center;justify-content:center;min-height:38px;padding:9px 13px;font-weight:800}.btn:hover,.tool:hover,.bit:hover,.mini-btn:hover,.seg:hover,.file-btn:hover{transform:translateY(-1px);border-color:rgba(255,159,28,.55);box-shadow:0 10px 22px rgba(0,0,0,.18)}.btn.primary{background:linear-gradient(135deg,var(--accent),#ffc069);color:#121212;border-color:transparent}.btn.ghost{background:rgba(255,255,255,.04)}.btn.full{width:100%}.mini-btn{padding:7px 10px;font-size:.78rem}.mini-btn.danger{border-color:rgba(255,77,94,.45);color:#ffc2c8}.danger{color:var(--danger)}
.tool-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}.tool{min-height:48px;padding:7px 8px;display:flex;align-items:center;gap:8px;font-size:1.12rem}.tool span{font-size:.78rem;color:var(--muted)}.tool.active,.bit.active,.seg.active{background:rgba(255,159,28,.18);border-color:rgba(255,159,28,.65);box-shadow:inset 0 0 0 1px rgba(255,159,28,.15)}.file-btn{display:flex;align-items:center;justify-content:center;margin-top:8px;min-height:40px;background:rgba(49,208,125,.12);border-color:rgba(49,208,125,.35);font-weight:800}.file-btn input{display:none}
.section-title{display:flex;align-items:center;justify-content:space-between;gap:8px}.object-list{display:flex;flex-direction:column;gap:7px;max-height:260px;overflow:auto}.object-item{display:grid;grid-template-columns:28px 1fr auto auto;align-items:center;gap:7px;border:1px solid var(--line);border-radius:12px;background:#090e18;padding:7px}.object-item.selected{border-color:var(--accent);background:rgba(255,159,28,.12)}.object-item input{width:100%;border:0;background:transparent;outline:none;font-size:.82rem}.icon-btn{border:0;background:transparent;color:var(--muted);padding:4px;border-radius:7px}.icon-btn:hover{background:rgba(255,255,255,.08);color:var(--text)}
.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.form-grid.compact label,.settings-form label,.auth-form label{display:flex;flex-direction:column;gap:6px;color:var(--muted);font-size:.78rem}.form-grid input,.form-grid select,.settings-form input,.settings-form select,.settings-form textarea,.auth-form input{width:100%;border:1px solid var(--line);border-radius:12px;background:#070b13;padding:9px 10px;outline:none;color:var(--text)}.form-grid input:focus,.form-grid select:focus,.settings-form input:focus,.settings-form textarea:focus,.auth-form input:focus{border-color:rgba(255,159,28,.65)}.tool-library{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin-bottom:10px}.bit{padding:9px 8px;font-size:.79rem;background:#0b111d}
.canvas-toolbar{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px;border-bottom:1px solid var(--line);background:rgba(17,26,43,.72)}.view-toggle,.zoom-controls{display:flex;align-items:center;gap:7px}.seg{padding:8px 12px;font-size:.82rem}.coords{color:#b9c6dc;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:.86rem;white-space:nowrap}.zoom-controls span{min-width:54px;text-align:center;color:var(--muted);font-size:.82rem}
.transform-bar{display:flex;align-items:end;gap:8px;flex-wrap:wrap;padding:8px 10px;border-bottom:1px solid var(--line);background:rgba(8,12,20,.75)}.transform-bar label{display:flex;flex-direction:column;gap:4px;color:var(--muted);font-size:.7rem}.transform-bar input{width:76px;border:1px solid var(--line);border-radius:10px;background:#05070b;padding:6px 8px;outline:none}.transform-bar.disabled{opacity:.48;pointer-events:none}
.canvas-stage{position:relative;flex:1;min-height:0;background:#05070b;overflow:hidden}.canvas-stage canvas{display:block;width:100%;height:100%;touch-action:none;cursor:crosshair}.hidden{display:none!important}.hint{position:absolute;left:12px;bottom:12px;border:1px solid var(--line);background:rgba(7,10,15,.76);backdrop-filter:blur(8px);border-radius:999px;padding:7px 11px;color:var(--muted);font-size:.76rem;pointer-events:none}.preview3d{display:block;width:100%;height:230px;border:1px solid var(--line);border-radius:14px;background:#05070b}.cam-warning{font-size:.76rem;color:#ffcf8b;line-height:1.35}.gcode{width:100%;min-height:270px;resize:vertical;border:1px solid var(--line);border-radius:14px;background:#05070b;padding:12px;color:#dce8fb;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:.78rem;line-height:1.45;outline:none}.toast{position:fixed;right:18px;bottom:18px;z-index:50;max-width:min(420px,calc(100vw - 32px));padding:12px 14px;border-radius:14px;background:#101a2b;border:1px solid rgba(255,159,28,.5);box-shadow:var(--shadow);transform:translateY(20px);opacity:0;pointer-events:none;transition:.22s ease}.toast.show{transform:translateY(0);opacity:1}.toast.error{border-color:rgba(255,77,94,.7)}
.admin-body{min-height:100dvh;background:radial-gradient(circle at top left,rgba(255,159,28,.18),transparent 35%),var(--bg);display:grid;place-items:center;padding:24px}.admin-body.wide{display:block}.auth-card,.admin-panel{width:min(500px,100%);border:1px solid var(--line);border-radius:var(--radius);background:rgba(13,19,32,.94);box-shadow:var(--shadow);padding:22px}.auth-card h1{margin-bottom:8px}.auth-form,.settings-form{display:flex;flex-direction:column;gap:12px}.notice{border-radius:12px;padding:11px 12px;margin:10px 0;font-size:.9rem}.notice.success{background:rgba(49,208,125,.12);border:1px solid rgba(49,208,125,.38)}.notice.danger{background:rgba(255,77,94,.12);border:1px solid rgba(255,77,94,.38)}.text-link{display:inline-block;margin-top:14px;color:#ffcf8b}.admin-topbar{display:flex;justify-content:space-between;align-items:center;margin:0 auto 16px;max-width:1180px;border:1px solid var(--line);border-radius:var(--radius);padding:12px 16px;background:rgba(13,19,32,.94)}.admin-topbar nav{display:flex;gap:14px}.admin-topbar a{color:#ffcf8b;text-decoration:none}.admin-grid{max-width:1180px;margin:auto;display:grid;grid-template-columns:minmax(0,1fr) minmax(360px,.8fr);gap:16px}.admin-panel{width:100%}.settings-form .check{flex-direction:row;align-items:center}.settings-form .check input{width:auto}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse}th,td{border-bottom:1px solid var(--line);padding:10px;text-align:left;font-size:.86rem}th{color:#c8d5eb}
@media (max-width:1180px){.app-shell{grid-template-columns:280px minmax(360px,1fr);grid-template-rows:68px minmax(0,1fr) auto}.right-panel{grid-column:1/-1;display:grid;grid-template-columns:330px minmax(310px,1fr) minmax(300px,1fr);gap:14px}.right-panel section{border:0;padding:0}.preview3d{height:210px}.gcode{min-height:210px}.project-actions input{width:210px}}
@media (max-width:860px){.app-body{overflow:auto}.app-shell{height:auto;min-height:100dvh;grid-template-columns:1fr;grid-template-rows:auto;gap:10px}.topbar,.project-actions{align-items:stretch}.topbar{flex-direction:column}.project-actions input,.project-actions .btn{width:100%}.left-panel,.right-panel,.center-panel{grid-column:auto}.left-panel{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.left-panel section{border:1px solid var(--line);border-radius:14px;padding:12px;background:rgba(17,26,43,.42)}.center-panel{height:72dvh;min-height:520px}.right-panel{display:block}.right-panel section{padding:12px 0;border-bottom:1px solid var(--line)}.canvas-toolbar{flex-wrap:wrap}.coords{order:3;width:100%}.admin-grid{grid-template-columns:1fr}.admin-topbar{align-items:flex-start;flex-direction:column}.form-grid{grid-template-columns:1fr}}
@media (max-width:560px){.left-panel{display:block}.tool-grid{grid-template-columns:repeat(4,1fr)}.tool{justify-content:center;min-height:50px}.tool span{display:none}.center-panel{height:70dvh;min-height:480px}.transform-bar input{width:68px}.hint{display:none}.brand{min-width:auto}.preview3d{height:190px}}
.plan-pill,.usage-pill{display:inline-flex;align-items:center;justify-content:center;min-height:36px;padding:8px 11px;border-radius:999px;border:1px solid var(--line);background:rgba(255,255,255,.04);color:var(--muted);font-size:.78rem;font-weight:900;white-space:nowrap}.plan-pill.premium,.usage-pill.premium{background:rgba(49,208,125,.14);border-color:rgba(49,208,125,.45);color:#caffdf}.btn.premium-btn,.premium-btn{background:linear-gradient(135deg,var(--accent-2),#8ff0b9);color:#07130d;border-color:transparent;font-weight:900}.file-btn.secondary{background:rgba(255,255,255,.035);border-color:var(--line)}.preset-row,.resume-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;margin-top:9px}.preset-row select,.resume-row input{min-width:0;border:1px solid var(--line);border-radius:12px;background:#070b13;padding:9px 10px;outline:none;color:var(--text)}.resume-row .btn{min-height:39px}.premium-page{min-height:100dvh;background:radial-gradient(circle at top left,rgba(255,159,28,.2),transparent 34%),radial-gradient(circle at bottom right,rgba(49,208,125,.16),transparent 33%),var(--bg);color:var(--text);overflow-x:hidden}.premium-page main{width:min(1180px,calc(100% - 32px));margin:0 auto}.premium-nav{width:min(1180px,calc(100% - 32px));margin:16px auto 0;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 14px;border:1px solid var(--line);border-radius:22px;background:rgba(13,19,32,.82);backdrop-filter:blur(14px);box-shadow:var(--shadow)}.premium-logo{display:flex;align-items:center;gap:10px;color:var(--text);text-decoration:none}.premium-nav nav{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.premium-nav a:not(.btn):not(.premium-logo){color:#ffcf8b;text-decoration:none;font-weight:800}.premium-hero{min-height:520px;display:grid;grid-template-columns:minmax(0,1fr) 430px;align-items:center;gap:40px;padding:58px 0 42px}.eyebrow{display:inline-flex;align-items:center;border:1px solid rgba(255,159,28,.42);border-radius:999px;background:rgba(255,159,28,.12);color:#ffcf8b;padding:7px 11px;font-weight:900;font-size:.78rem;text-transform:uppercase;letter-spacing:.09em}.hero-copy h1{font-size:clamp(2.2rem,5vw,4.8rem);line-height:.96;margin:18px 0 18px;letter-spacing:-.06em}.hero-copy p{font-size:1.08rem;line-height:1.65;color:#b8c4d8;max-width:680px}.hero-actions{display:flex;gap:12px;flex-wrap:wrap;margin-top:24px}.premium-visual{display:grid;place-items:center}.cnc-board{position:relative;width:min(410px,78vw);aspect-ratio:1.22;border-radius:28px;background:linear-gradient(145deg,#c9bd95,#8f876c);box-shadow:0 38px 90px rgba(0,0,0,.42),inset 0 -20px 0 rgba(65,52,29,.25);transform:perspective(900px) rotateX(56deg) rotateZ(-36deg)}.cnc-board:before{content:"";position:absolute;inset:24px;border-radius:18px;border:12px solid rgba(66,55,33,.55);box-shadow:inset 0 4px 8px rgba(255,255,255,.14),0 3px 0 rgba(255,255,255,.18)}.cnc-board span{position:absolute;left:26%;top:26%;width:48%;height:48%;border-radius:38%;border:18px solid rgba(55,47,31,.68);box-shadow:inset 4px 4px 0 rgba(255,255,255,.12),3px 6px 9px rgba(0,0,0,.28)}.cnc-board span:nth-child(1){transform:rotate(0deg) translateX(-18%)}.cnc-board span:nth-child(2){transform:rotate(90deg) translateX(-18%)}.cnc-board span:nth-child(3){transform:rotate(45deg) scale(.72)}.cnc-board span:nth-child(4){transform:rotate(-45deg) scale(.72)}.premium-notice{width:min(1180px,calc(100% - 32px));margin:12px auto}.pricing-section{display:grid;grid-template-columns:1fr 1fr;gap:18px;padding:22px 0 36px}.price-card{position:relative;border:1px solid var(--line);border-radius:26px;background:rgba(13,19,32,.9);box-shadow:var(--shadow);padding:26px;overflow:hidden}.price-card:before{content:"";position:absolute;inset:auto -90px -120px auto;width:260px;height:260px;border-radius:999px;background:rgba(255,159,28,.11);pointer-events:none}.premium-card{border-color:rgba(49,208,125,.42);background:linear-gradient(145deg,rgba(17,26,43,.96),rgba(10,18,28,.96))}.premium-card:before{background:rgba(49,208,125,.14)}.card-topline{display:inline-flex;margin-bottom:10px;padding:7px 12px;border-radius:999px;background:rgba(49,208,125,.15);color:#b9ffd3;font-weight:900}.price-card h2{font-size:1.7rem;text-transform:none;letter-spacing:-.03em;color:var(--text)}.price{font-size:2rem;font-weight:950;color:#ffcf8b;margin:0 0 8px}.card-subtitle{color:#aebbd0;line-height:1.55}.price-card ul{margin:18px 0 24px;padding:0;list-style:none;display:grid;gap:11px}.price-card li{position:relative;padding-left:30px;line-height:1.45;color:#d8e2f2}.price-card li:before{content:"✓";position:absolute;left:0;top:0;width:21px;height:21px;border-radius:999px;display:grid;place-items:center;background:rgba(49,208,125,.16);color:#98ffbf;font-weight:900;font-size:.8rem}.premium-process,.payment-section{border:1px solid var(--line);border-radius:26px;background:rgba(13,19,32,.82);box-shadow:var(--shadow);padding:28px;margin:0 0 22px}.premium-process h2,.payment-section h2{font-size:clamp(1.6rem,3vw,2.55rem);text-transform:none;letter-spacing:-.04em;color:var(--text);margin-top:14px}.process-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-top:22px}.process-grid div{border:1px solid var(--line);border-radius:18px;background:rgba(255,255,255,.035);padding:16px}.process-grid strong{display:grid;place-items:center;width:34px;height:34px;border-radius:12px;background:linear-gradient(135deg,var(--accent),#ffc069);color:#111;font-weight:950}.process-grid p{color:#b7c2d4;line-height:1.5}.payment-section{display:grid;grid-template-columns:minmax(0,1fr) 390px;gap:22px;align-items:start}.payment-section p{color:#b7c2d4;line-height:1.6}.activation-card{border:1px solid rgba(49,208,125,.34);border-radius:22px;background:rgba(7,11,19,.62);padding:20px}.activation-card h3{margin:0 0 8px}.activation-card label{display:flex;flex-direction:column;gap:7px;color:var(--muted);font-size:.82rem;margin:14px 0}.activation-card input{border:1px solid var(--line);border-radius:14px;background:#05070b;padding:12px;outline:none}.premium-footer{width:min(1180px,calc(100% - 32px));margin:24px auto 24px;padding:18px;border:1px solid var(--line);border-radius:22px;background:rgba(13,19,32,.76);display:flex;justify-content:space-between;gap:18px;color:#aebbd0}.premium-footer p{margin:8px 0 0;max-width:520px}.premium-footer nav{display:flex;gap:12px;flex-wrap:wrap}.premium-footer a{color:#ffcf8b;text-decoration:none;font-weight:800}@media (max-width:960px){.premium-hero,.pricing-section,.payment-section{grid-template-columns:1fr}.premium-visual{order:-1}.process-grid{grid-template-columns:repeat(2,1fr)}}@media (max-width:640px){.premium-nav{align-items:flex-start;flex-direction:column}.premium-nav nav,.premium-nav .btn{width:100%}.premium-nav .btn{justify-content:center}.premium-hero{padding-top:28px}.pricing-section{gap:12px}.price-card,.premium-process,.payment-section{padding:18px;border-radius:20px}.process-grid{grid-template-columns:1fr}.premium-footer{flex-direction:column}.project-actions .plan-pill,.project-actions .usage-pill{width:100%}.preset-row,.resume-row{grid-template-columns:1fr}.resume-row .btn{width:100%}}

/* D3d_CNC v1.3 corrections import, premium et rendu matière */
.premium-d3dia-style{background:radial-gradient(circle at 14% 0%,rgba(255,159,28,.24),transparent 35%),radial-gradient(circle at 86% 12%,rgba(49,208,125,.18),transparent 32%),linear-gradient(180deg,#07101c,#05070b 72%)}
.premium-nav-pro{margin-top:18px;border-radius:26px;background:rgba(8,13,22,.86);box-shadow:0 24px 60px rgba(0,0,0,.28)}
.premium-logo span:last-child{display:flex;flex-direction:column;line-height:1.1}.premium-logo small{font-size:.72rem;color:var(--muted);font-weight:800;margin-top:3px}.premium-hero-pro{min-height:560px;padding-top:62px}.premium-hero-pro .hero-copy h1{max-width:780px}.premium-hero-pro .hero-copy p{font-size:1.12rem;color:#c5d0e3}.cnc-board-pro{box-shadow:0 50px 95px rgba(0,0,0,.45),inset 0 -24px 0 rgba(54,43,24,.32),inset 0 2px 0 rgba(255,255,255,.22)}.cnc-board-pro i{position:absolute;right:38px;top:-70px;width:6px;height:118px;border-radius:999px;background:linear-gradient(#ff4d5e,#ff9f1c);box-shadow:0 0 18px rgba(255,77,94,.55);transform:rotate(8deg)}
.pricing-section-pro{align-items:stretch}.pricing-section-pro .price-card{min-height:100%;padding:30px;border-radius:30px}.featured-card{outline:1px solid rgba(49,208,125,.28);box-shadow:0 30px 80px rgba(0,0,0,.32),0 0 0 1px rgba(49,208,125,.18) inset}.free-label{background:rgba(255,159,28,.16);color:#ffcf8b}.premium-process-pro,.payment-section-pro,.premium-help{background:rgba(9,15,25,.86);border:1px solid rgba(255,255,255,.12);box-shadow:0 24px 70px rgba(0,0,0,.28)}.process-grid-pro div{min-height:150px}.payment-section-pro{grid-template-columns:minmax(0,1fr) 410px}.payment-cards{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:18px}.payment-cards article{border:1px solid var(--line);border-radius:22px;background:rgba(255,255,255,.035);padding:18px}.payment-cards h3{margin:0 0 8px}.payment-cards p{min-height:58px}.activation-card-pro small{display:block;margin-top:12px;color:var(--muted);line-height:1.4}.premium-help{width:min(1180px,calc(100% - 32px));margin:0 auto 22px;border-radius:26px;padding:24px}.premium-help h2{margin:0 0 8px;font-size:1.65rem}.premium-help p{margin:0;color:#b7c2d4}.premium-help a{color:#ffcf8b;font-weight:900}.premium-footer-pro{margin-bottom:30px}
@media (max-width:960px){.payment-section-pro,.payment-cards{grid-template-columns:1fr}.payment-cards p{min-height:auto}.cnc-board-pro{width:min(360px,76vw)}}

/* D3d_CNC 1.8 stability */
.canvas-stage canvas{user-select:none;-webkit-user-select:none;overscroll-behavior:contain;}
.center-panel,.canvas-stage{contain:layout paint;}


/* D3d_CNC 1.9 correction stabilité 2D */
.canvas-toolbar{min-height:58px;align-items:center;}
.coords{display:inline-flex;align-items:center;justify-content:center;width:250px;min-width:250px;max-width:250px;overflow:hidden;text-overflow:ellipsis;}
.canvas-stage{isolation:isolate;overscroll-behavior:contain;}
.canvas-stage canvas{position:absolute;inset:0;width:100%;height:100%;} 
@media (max-width:860px){.coords{width:100%;min-width:0;max-width:none;justify-content:flex-start;}}


/* D3d_CNC 2.0.4 - stabilité canevas et rainures CAM façon Easel */
.canvas-stage{overflow:hidden;contain:size layout paint;will-change:contents;}
.canvas-stage canvas{display:block;position:absolute;inset:0;width:100%;height:100%;transform:translateZ(0);backface-visibility:hidden;}
.coords{font-variant-numeric:tabular-nums;}
body.app-body{overscroll-behavior:none;}
