:root{--ink: #1a1b1e;--ink-soft: #5a5c63;--paper: #f7f6f1;--card: #ffffff;--tape: #f5c400;--tape-deep: #d9ae00;--alu: #4e6172;--alu-bg: #e7edf2;--mdf: #8a5a2c;--mdf-bg: #f3e8d7;--line: #e3e1d8;--danger: #bf3a2b;--radius: 10px;--font-body: "Barlow", system-ui, sans-serif;--font-display: "Barlow Condensed", "Arial Narrow", sans-serif}html[lang=ar]{--font-body: "Tajawal", system-ui, sans-serif;--font-display: "Tajawal", system-ui, sans-serif}html[lang=ar] .brand-name,html[lang=ar] .brand-tag,html[lang=ar] .badge,html[lang=ar] .trade-title,html[lang=ar] .btn{letter-spacing:0}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--font-body);font-size:16px;line-height:1.45}button{font:inherit;color:inherit;background:none;border:none;padding:0;cursor:pointer}button:focus-visible,input:focus-visible,summary:focus-visible{outline:3px solid var(--ink);outline-offset:2px}.app{max-width:560px;margin:0 auto;min-height:100dvh;display:flex;flex-direction:column}.brand{position:sticky;top:0;z-index:10;background:var(--tape)}.brand-row{display:flex;align-items:baseline;gap:10px;padding:10px 16px 2px}.back-btn{align-self:center;font-size:24px;line-height:1;min-width:44px;min-height:44px;margin-inline-start:-10px;border-radius:8px}.lang-btn{margin-inline-start:auto;align-self:center;min-width:44px;min-height:40px;border:1.5px solid var(--ink);border-radius:8px;font-family:var(--font-display);font-weight:600;font-size:16px}.brand-name{font-family:var(--font-display);font-weight:700;font-size:28px;letter-spacing:.06em;text-transform:uppercase}.brand-tag{font-family:var(--font-display);font-weight:500;font-size:15px;letter-spacing:.12em;text-transform:uppercase;color:#1a1b1ecc}.ruler{height:14px;background:repeating-linear-gradient(90deg,var(--ink) 0 2px,transparent 2px 48px) left bottom / 100% 13px no-repeat,repeating-linear-gradient(90deg,var(--ink) 0 1.5px,transparent 1.5px 8px) left bottom / 100% 7px no-repeat}.screen{flex:1;padding:18px 16px calc(96px + env(safe-area-inset-bottom))}.screen-title{display:flex;align-items:center;gap:10px;font-family:var(--font-display);font-weight:600;font-size:24px;letter-spacing:.02em;margin:0 0 16px}.badge{font-family:var(--font-display);font-weight:600;font-size:13px;letter-spacing:.14em;text-transform:uppercase;padding:3px 8px;border-radius:4px}.badge-alu{background:var(--alu-bg);color:var(--alu)}.badge-bois{background:var(--mdf-bg);color:var(--mdf)}.empty{background:var(--card);border:1px dashed var(--line);border-radius:var(--radius);padding:28px 20px;text-align:center;margin-top:24px}.empty-main{font-family:var(--font-display);font-size:20px;font-weight:600;margin:0 0 6px}.empty-hint{color:var(--ink-soft);margin:0}.product-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:12px}.product-card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:14px}.product-head{display:flex;align-items:center;gap:10px}.product-name{flex:1;display:flex;align-items:center;gap:10px;font-family:var(--font-display);font-size:19px;font-weight:600;margin:0}.product-index{display:inline-flex;align-items:center;justify-content:center;min-width:26px;height:26px;border:1.5px solid var(--ink);border-radius:50%;font-family:var(--font-display);font-size:15px;font-weight:600}.icon-btn{min-width:44px;min-height:44px;color:var(--ink-soft);font-size:17px;border-radius:8px}.dims{display:flex;flex-wrap:wrap;gap:10px 18px;margin:10px 0 0}.dim{display:inline-flex;align-items:center;gap:8px;font-family:var(--font-display);font-variant-numeric:tabular-nums}.dim:before,.dim:after{content:"";width:14px;height:9px;border-bottom:1.5px solid var(--ink-soft)}.dim:before{border-inline-start:1.5px solid var(--ink-soft)}.dim:after{border-inline-end:1.5px solid var(--ink-soft)}.dim-key{font-size:14px;font-weight:500;color:var(--ink-soft)}.dim-value{font-size:20px;font-weight:600}.qty-row{display:flex;align-items:center;gap:4px;margin-top:10px}.step-btn{min-width:48px;min-height:48px;border:1.5px solid var(--ink);border-radius:8px;font-size:22px;font-weight:600;background:var(--card)}.step-btn:active{background:var(--tape)}.qty-value{min-width:64px;text-align:center;font-family:var(--font-display);font-size:22px;font-weight:600;font-variant-numeric:tabular-nums}.illu-svg{display:block;width:100%;height:100%;overflow:visible}.illu-dim-label{font-family:var(--font-display);font-size:6px;font-weight:600;font-variant-numeric:tabular-nums}.illu-dim-bg{paint-order:stroke;stroke:var(--paper);stroke-width:2.4px;stroke-linejoin:round}.template-card.template-card-illu{flex-direction:row;align-items:center;gap:14px;text-align:start}.illu-thumb{flex-shrink:0;width:58px;height:44px;display:flex;align-items:center;justify-content:center}.template-text{display:flex;flex-direction:column;gap:4px;min-width:0}.illu-diagram{margin:0 0 18px;padding:16px;background:var(--card);border:1px solid var(--line);border-radius:var(--radius)}.illu-diagram .illu-svg{max-height:220px}.illu-assembly{margin:10px 0 0;height:96px}.illu-assembly .illu-svg{height:96px}.trade-group{margin-bottom:22px}.trade-title{font-family:var(--font-display);font-size:15px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;margin:0 0 10px;padding-inline-start:10px;border-inline-start:4px solid}.trade-title-alu{color:var(--alu);border-color:var(--alu)}.trade-title-bois{color:var(--mdf);border-color:var(--mdf)}.template-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}.template-card{width:100%;text-align:start;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:16px 14px;display:flex;flex-direction:column;gap:4px}.template-card:active{border-color:var(--tape-deep);background:#fffbe8}.template-name{font-family:var(--font-display);font-size:20px;font-weight:600}.template-meta{color:var(--ink-soft);font-size:14px}.field{margin-bottom:14px}.field-label{display:block;font-weight:500;margin-bottom:6px}.field-optional{color:var(--ink-soft);font-weight:400;font-size:14px}.input{width:100%;min-height:56px;background:var(--card);border:1.5px solid var(--line);border-radius:var(--radius);padding:8px 14px;font-size:18px}.input:focus{border-color:var(--ink);outline:none}.input-mm{position:relative}.input-number{font-family:var(--font-display);font-size:24px;font-weight:600;font-variant-numeric:tabular-nums;padding-inline-end:56px}.input-suffix{position:absolute;inset-inline-end:14px;top:50%;transform:translateY(-50%);color:var(--ink-soft);font-family:var(--font-display);font-size:16px;pointer-events:none}.toggle{display:flex;align-items:center;gap:12px;min-height:52px;background:var(--card);border:1.5px solid var(--line);border-radius:var(--radius);padding:8px 14px;margin-bottom:14px;font-weight:500}.toggle input{width:24px;height:24px;accent-color:var(--tape-deep)}.qty-row-form{margin-top:0}.settings{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:0 14px;margin:18px 0}.settings summary{display:flex;align-items:center;gap:10px;min-height:52px;font-weight:500;cursor:pointer;list-style:none}.settings summary:before{content:"▸";font-size:14px;transition:transform .12s}.settings[open] summary:before{transform:rotate(90deg)}.settings-flag{background:var(--tape);font-family:var(--font-display);font-size:13px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;padding:2px 8px;border-radius:4px}.settings-hint{color:var(--ink-soft);font-size:14px;margin:0 0 12px}.field-constant .input{min-height:48px}.field-constant .input-number{font-size:20px}.settings>.field:last-of-type{margin-bottom:16px}.preview{background:var(--alu-bg);border-radius:var(--radius);padding:12px 14px;font-weight:500;margin:14px 0 0}.form-error{background:#fbeae7;color:var(--danger);border-radius:var(--radius);padding:12px 14px;margin:14px 0 0}.action-bar{position:fixed;left:0;right:0;bottom:0;z-index:10;display:flex;gap:10px;max-width:560px;margin:0 auto;padding:12px 16px calc(12px + env(safe-area-inset-bottom));background:var(--paper);border-top:1px solid var(--line)}.btn{flex:1;min-height:56px;border-radius:var(--radius);font-family:var(--font-display);font-size:19px;font-weight:600;letter-spacing:.03em}.btn-primary{background:var(--tape);border:1.5px solid var(--tape-deep)}.btn-primary:active{background:var(--tape-deep)}.btn-primary:disabled{background:var(--line);border-color:var(--line);color:var(--ink-soft);cursor:default}.btn-secondary{background:var(--card);border:1.5px solid var(--ink)}.btn-secondary:disabled{border-color:var(--line);color:var(--ink-soft);cursor:default}.btn-link{display:block;margin:20px auto 0;color:var(--danger);text-decoration:underline;min-height:44px}.tabs{display:flex;background:var(--card);border:1.5px solid var(--ink);border-radius:var(--radius);overflow:hidden;margin-bottom:16px}.tab{flex:1;min-height:48px;font-family:var(--font-display);font-size:17px;font-weight:600}.tab-active{background:var(--tape)}.sheet-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px}.sheet-date{color:var(--ink-soft);font-size:14px;margin:0 0 16px}.sheet{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:14px;margin-bottom:14px}.sheet-product{display:flex;align-items:center;gap:10px;padding-bottom:10px;border-bottom:2px solid var(--ink)}.sheet-product-name{flex:1;font-family:var(--font-display);font-size:19px;font-weight:600;margin:0}.sheet-product-qty{font-family:var(--font-display);font-size:19px;font-weight:600;font-variant-numeric:tabular-nums}.cut-list,.bom-list{list-style:none;margin:0;padding:0}.cut-row{display:flex;align-items:center;gap:10px;padding:10px 0;border-bottom:1px solid var(--line)}.cut-row:last-child{border-bottom:none}.cut-check{display:none;width:14px;height:14px;border:1.5px solid var(--ink);flex-shrink:0}.cut-main{flex:1;min-width:0;display:flex;flex-direction:column}.cut-label{font-weight:500}.cut-material{color:var(--ink-soft);font-size:13px}.cut-dims{display:flex;flex-direction:column;align-items:flex-end}.cut-value{font-family:var(--font-display);font-size:21px;font-weight:600;font-variant-numeric:tabular-nums;white-space:nowrap;direction:ltr;unicode-bidi:isolate}.cut-detail{color:var(--ink-soft);font-size:13px}.cut-qty{min-width:40px;text-align:end;font-family:var(--font-display);font-size:19px;font-weight:600;font-variant-numeric:tabular-nums}.sheet-plan{border-top:4px solid var(--ink)}.plan-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:8px}.kerf-field{display:flex;align-items:center;gap:8px;font-size:14px;color:var(--ink-soft)}.kerf-input{position:relative;display:inline-block;width:96px}.kerf-input .input{min-height:44px;font-size:18px;padding-inline-end:42px}.plan-material{margin-bottom:16px}.plan-material-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin:8px 0 6px}.plan-bars{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}.plan-bar{display:flex;flex-direction:column;gap:3px}.plan-bar-name{font-family:var(--font-display);font-size:13px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft)}.plan-bar-visual{display:flex;height:28px;border:1.5px solid var(--ink);border-radius:4px;overflow:hidden}.plan-piece{flex-basis:0;min-width:0;display:flex;align-items:center;justify-content:center;background:var(--tape);border-inline-end:1.5px solid var(--ink);font-family:var(--font-display);font-size:12px;font-weight:600;font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden}.plan-rest{flex-basis:0;min-width:0;display:flex;align-items:center;justify-content:center;background:repeating-linear-gradient(45deg,#eceae0 0 6px,var(--paper) 6px 12px);font-size:11px;color:var(--ink-soft);white-space:nowrap;overflow:hidden}.plan-bar-text{font-size:13px;color:var(--ink-soft);font-variant-numeric:tabular-nums}.panel-visual{position:relative;width:100%;border:1.5px solid var(--ink);border-radius:4px;overflow:hidden;background:repeating-linear-gradient(45deg,#eceae0 0 6px,var(--paper) 6px 12px);direction:ltr}.panel-piece{position:absolute;display:flex;align-items:center;justify-content:center;background:var(--mdf-bg);border:1px solid var(--ink);font-family:var(--font-display);font-size:11px;font-weight:600;font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden}.quote-detail{color:var(--ink-soft);font-size:13px;font-variant-numeric:tabular-nums}.quote-missing{background:#fbeae7;color:var(--danger);font-size:13px;font-weight:500;padding:2px 8px;border-radius:4px;white-space:nowrap}.quote-subtotal{display:flex;justify-content:space-between;align-items:baseline;gap:12px;font-weight:600;border-top:2px solid var(--ink);padding-top:10px;margin:4px 0 0}.quote-markup{display:flex;justify-content:flex-end;margin:12px 0}.quote-grand{display:flex;justify-content:space-between;align-items:baseline;gap:12px;background:var(--tape);border-radius:var(--radius);padding:12px 14px;margin:0;font-family:var(--font-display);font-size:21px;font-weight:600;font-variant-numeric:tabular-nums}.sheet-bom{border-top:4px solid var(--tape)}.bom-title{font-family:var(--font-display);font-size:19px;font-weight:600;margin:0 0 6px}.bom-row{display:flex;justify-content:space-between;align-items:baseline;gap:12px;padding:9px 0;border-bottom:1px solid var(--line)}.bom-row:last-child{border-bottom:none}.bom-label{font-weight:500}.bom-amount{font-family:var(--font-display);font-size:17px;font-weight:600;font-variant-numeric:tabular-nums;text-align:end;white-space:nowrap}.bom-note{color:var(--ink-soft);font-size:13px;margin:10px 0 0}.title-input{width:100%;background:transparent;border:none;border-bottom:2px dashed transparent;font-family:var(--font-display);font-weight:600;font-size:24px;letter-spacing:.02em;color:var(--ink);padding:0 0 4px;margin:0 0 16px}.title-input:focus{outline:none;border-bottom-color:var(--tape-deep)}.nav-list{margin-top:22px}.archived-list{list-style:none;margin:0 0 14px;padding:0}.archived-row{display:flex;align-items:center;gap:8px;padding:10px 0;border-bottom:1px solid var(--line)}.archived-row:last-child{border-bottom:none}.mini-btn{min-height:40px;padding:0 10px;border:1.5px solid var(--ink);border-radius:8px;font-size:13px;font-weight:500;background:var(--card);white-space:nowrap}.mini-btn-danger{border-color:var(--danger);color:var(--danger)}.links-row{display:flex;justify-content:center;gap:24px;margin-top:18px}.links-row .btn-link{margin:0}.btn-link-neutral{color:var(--ink-soft)}.mat-row{padding:10px 0;border-bottom:1px solid var(--line)}.mat-row:last-child{border-bottom:none}.mat-name{display:flex;align-items:center;gap:10px;font-weight:500;margin:0 0 8px}.mat-fields{display:flex;flex-wrap:wrap;gap:10px}.field-mat{flex:1;min-width:136px;margin-bottom:4px}.field-mat .field-label{font-size:14px;color:var(--ink-soft)}.input-small{min-height:48px;font-size:19px}.backup-row{display:flex;gap:10px;flex-wrap:wrap}.backup-row .btn{flex:1;min-width:150px}.file-hidden{display:none}.auth{max-width:420px;margin:0 auto}.legal-link{text-align:center;margin-top:28px;font-size:13px}.legal-link a{color:var(--ink-soft)}.btn-block{display:block;width:100%;min-height:56px;margin-top:6px}.sync-dot{width:12px;height:12px;border-radius:50%;border:1.5px solid var(--ink);align-self:center;margin-inline-start:auto}.sync-dot+.lang-btn{margin-inline-start:10px}.sync-idle,.sync-synced{background:#3f9b48}.sync-pending,.sync-syncing{background:var(--card)}.sync-offline{background:#9aa0a6}.sync-error{background:var(--danger)}.devis-doc{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:18px 16px}.devis-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;border-bottom:2px solid var(--ink);padding-bottom:12px;margin-bottom:12px}.devis-logo{max-height:56px;max-width:160px;display:block;margin-bottom:6px}.devis-ref{text-align:end}.devis-numero{font-family:var(--font-display);font-size:22px;font-weight:700;font-variant-numeric:tabular-nums;direction:ltr;unicode-bidi:isolate}.devis-meta{color:var(--ink-soft);font-size:13px}.devis-client{margin-bottom:12px}.devis-produits{border-bottom:2px solid var(--line);margin-bottom:8px}.statut{display:inline-block;font-family:var(--font-display);font-size:13px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;padding:2px 8px;border-radius:4px;border:1.5px solid var(--ink);white-space:nowrap}.statut-brouillon{background:var(--card);color:var(--ink-soft);border-color:var(--line)}.statut-envoye{background:var(--tape)}.statut-accepte{background:#d9f0db;border-color:#3f9b48;color:#245c2a}.statut-refuse{background:#fbeae7;border-color:var(--danger);color:var(--danger)}.devis-signature{margin-top:16px}.signature-box{height:90px;border:1.5px dashed var(--ink-soft);border-radius:var(--radius);margin-top:6px}.devis-link{margin:0;font-variant-numeric:tabular-nums;direction:ltr;unicode-bidi:isolate}.devis-list-title{margin-top:18px}.perso-add{margin-top:8px}.crash{max-width:560px;margin:0 auto;padding:48px 20px;font-family:var(--font-body);text-align:center}.crash-title{font-family:var(--font-display);font-size:24px;font-weight:600;margin:0 0 8px}.crash-hint{color:var(--ink-soft);margin:0 0 16px}.crash-detail{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:10px;font-size:12px;overflow-x:auto;text-align:start;direction:ltr;margin:0 0 20px}.crash .btn{width:100%}.print-header{display:none}@media print{body{background:#fff}.brand,.action-bar,.btn-link,.links-row,.tabs{display:none}.print-header{display:block;border-bottom:2px solid #000;padding-bottom:8px;margin-bottom:14px}.print-workshop{font-family:var(--font-display);font-size:22px;font-weight:700;letter-spacing:.04em}.screen{padding:0}.app{max-width:none}.sheet{border:none;border-radius:0;padding:0 0 12px;margin-bottom:18px;break-inside:avoid}.cut-check{display:inline-block}.sheet-bom,.sheet-plan{border-top:2px solid #000;padding-top:10px}.plan-piece{background:#fff}.kerf-field input{border:none;padding:0;width:40px;min-height:auto}.bom-note{display:none}}@media(prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}
