:root{--bg:#f4f1ea;--surface:#ffffff;--surface-2:#ece4d6;--ink:#1c2738;--ink-soft:#46505c;--line:#e2dccf;--brand:#2a4767;--brand-dark:#1d3550;--accent:#c08a3e;--ok:#3f7d4e;--danger:#b42318;--radius:14px;--font:"Inter",system-ui,-apple-system,"Segoe UI",sans-serif}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;font-family:var(--font);color:var(--ink);background:var(--bg);line-height:1.5;-webkit-font-smoothing:antialiased}h1,h2,h3{margin:0;line-height:1.2}button{cursor:pointer}button,input,select,textarea{font:inherit}a{color:var(--brand-dark)}.wrap{width:min(1100px,94vw);margin:0 auto;padding:1rem 0 4rem}.topbar{position:-webkit-sticky;position:sticky;top:0;z-index:10;background:var(--brand);color:#fff;padding:calc(.7rem + env(safe-area-inset-top)) 0 .7rem}.topbar .row{width:min(1100px,94vw);margin:0 auto;justify-content:space-between;gap:.6rem}.brand,.topbar .row{display:flex;align-items:center}.brand{gap:.55rem;font-weight:800;letter-spacing:-.01em}.brand .mark{width:30px;height:30px;border-radius:8px;background:#fff;display:grid;place-items:center}.brand .mark svg{width:22px;height:22px}.brand b{color:var(--accent)}.brand small{display:block;font-size:.6rem;font-weight:700;letter-spacing:.18em;opacity:.8}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;border:1px solid var(--brand);background:var(--brand);color:#fff;padding:.6rem 1rem;border-radius:999px;font-weight:700;font-size:.92rem;text-decoration:none;transition:filter .15s ease,transform .15s ease}.btn:hover{filter:brightness(1.06)}.btn:active{transform:scale(.98)}.btn.ghost{background:#fff;color:var(--brand-dark);border-color:var(--line)}.btn.accent{background:var(--accent);border-color:var(--accent);color:#241704}.btn.danger{background:#fff;color:var(--danger);border-color:#eec9c5}.btn.sm{padding:.4rem .7rem;font-size:.82rem}.btn.block{width:100%}.btn:disabled{opacity:.55;cursor:default}.login{min-height:100dvh;display:grid;place-items:center;padding:1.5rem}.login form{width:100%;max-width:360px;background:var(--surface);border:1px solid var(--line);border-radius:20px;padding:1.8rem;box-shadow:0 18px 45px rgba(28,39,56,.1)}.login .mark{width:48px;height:48px;border-radius:12px;background:var(--brand);display:grid;place-items:center;margin:0 auto 1rem}.login .mark svg{width:30px;height:30px}.login h1{text-align:center;font-size:1.3rem}.login p{text-align:center;color:var(--ink-soft);font-size:.88rem;margin:.3rem 0 1.3rem}.field{display:grid;grid-gap:.3rem;gap:.3rem;margin-bottom:.8rem}.field label{font-size:.72rem;text-transform:uppercase;letter-spacing:.08em;font-weight:700;color:var(--ink-soft)}.field input,.field select,.field textarea{width:100%;border:1px solid var(--line);border-radius:10px;background:#fff;padding:.62rem .7rem;min-height:44px;color:var(--ink)}.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px rgba(42,71,103,.16)}.field textarea{min-height:80px;resize:vertical}.grid2{grid-template-columns:1fr 1fr;grid-gap:.7rem}.grid2,.grid3{display:grid;gap:.7rem}.grid3{grid-template-columns:repeat(3,1fr);grid-gap:.7rem}@media (max-width:620px){.grid2,.grid3{grid-template-columns:1fr}}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:1.1rem 1.2rem;box-shadow:0 10px 26px rgba(28,39,56,.06)}.card+.card{margin-top:1rem}.section-title{font-size:.72rem;text-transform:uppercase;letter-spacing:.1em;font-weight:800;color:var(--brand-dark);margin-bottom:.7rem}.toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:.6rem;margin:1.2rem 0}.toolbar .search{flex:1 1;min-width:180px;border:1px solid var(--line);border-radius:999px;padding:.55rem .9rem;min-height:42px;background:#fff}.chips{display:flex;flex-wrap:wrap;gap:.4rem}.chip{border:1px solid var(--line);background:#fff;border-radius:999px;padding:.32rem .7rem;font-size:.82rem;font-weight:600;color:var(--ink-soft)}.chip.active{background:var(--brand);color:#fff;border-color:var(--brand)}.devis-grid{display:grid;grid-gap:.7rem;gap:.7rem}.devis-row{display:grid;grid-template-columns:1fr auto;grid-gap:.6rem 1rem;gap:.6rem 1rem;align-items:center;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:.9rem 1rem}.devis-row .meta{display:flex;flex-wrap:wrap;gap:.3rem .8rem;align-items:baseline}.devis-row .num{font-weight:800;color:var(--brand-dark)}.devis-row .name{font-weight:600}.devis-row .sub{color:var(--ink-soft);font-size:.85rem}.devis-row .ttc{font-weight:800;font-size:1.05rem}.devis-row .actions{display:flex;flex-wrap:wrap;gap:.4rem;align-items:center;justify-content:flex-end}.statusbtn{border:none;border-radius:999px;padding:.3rem .7rem;font-size:.78rem;font-weight:800;color:#fff}select.statusselect{border:1px solid var(--line);border-radius:999px;padding:.3rem 1.6rem .3rem .7rem;font-size:.8rem;font-weight:700}.line{display:grid;grid-template-columns:1fr 84px 96px 96px 36px;grid-gap:.5rem;gap:.5rem;align-items:end;margin-bottom:.55rem}.line .field{margin:0}.line .lt{display:flex;align-items:center;font-weight:700;height:44px}.line .del{border:1px solid var(--line);background:#fff;color:var(--danger);border-radius:10px;height:44px}@media (max-width:620px){.line{grid-template-columns:1fr 1fr;align-items:end;padding-bottom:.6rem;border-bottom:1px solid var(--line)}.line>.field:first-child{grid-column:1/-1}.line .lt{grid-column:1/2;justify-content:flex-start;height:44px;font-size:1.05rem}.line .del{grid-column:2/3;justify-self:end;width:48px}.devis-row{grid-template-columns:1fr}.devis-row .actions{justify-content:flex-start;gap:.5rem}.devis-row .actions .btn.sm,.devis-row .actions .statusselect{min-height:40px}}.totals{display:grid;grid-gap:.35rem;gap:.35rem;margin-top:.8rem;max-width:320px;margin-left:auto}.totals div{display:flex;justify-content:space-between}.totals .ttc{font-size:1.25rem;font-weight:800;color:var(--brand-dark);border-top:1px solid var(--line);padding-top:.4rem}.sticky-actions{position:-webkit-sticky;position:sticky;bottom:0;background:linear-gradient(to top,var(--bg) 70%,transparent);padding:.9rem 0 calc(.9rem + env(safe-area-inset-bottom));display:flex;gap:.6rem;flex-wrap:wrap}.empty{text-align:center;padding:3rem 1rem}.empty,.note{color:var(--ink-soft)}.note{font-size:.8rem}.banner{background:rgba(192,138,62,.14);border:1px dashed rgba(192,138,62,.5);color:#6f4a23;border-radius:10px;padding:.6rem .8rem;font-size:.84rem;margin-bottom:1rem}.preview-overlay{position:fixed;inset:0;z-index:60;background:rgba(18,28,42,.72);display:flex;flex-direction:column}.preview-bar{display:flex;align-items:center;justify-content:space-between;gap:.6rem;padding:calc(.6rem + env(safe-area-inset-top)) 1rem .6rem;background:var(--brand-dark);color:#fff}.preview-bar strong{font-size:.95rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1 1;text-align:center}.preview-bar .btn{white-space:nowrap;flex:none}.preview-bar .btn.ghost.sm{flex:none}.preview-scroll{flex:1 1;overflow:auto;padding:1.2rem;display:flex;justify-content:center;-webkit-overflow-scrolling:touch}.sheet{background:#fff;width:210mm;max-width:100%;min-height:290mm;height:max-content;padding:16mm;box-shadow:0 16px 50px rgba(0,0,0,.45);border-radius:2px}@media (max-width:760px){.sheet{padding:9mm 7mm;min-height:0}.preview-scroll{padding:.6rem}.preview-bar .lbl-hide{display:none}}@media print{body,html{background:#fff}.preview-bar,.topbar,.wrap{display:none!important}.preview-overlay{position:static;background:#fff;display:block}.preview-scroll{overflow:visible;padding:0;display:block}.sheet{box-shadow:none;width:auto;max-width:none;min-height:0;padding:0;border-radius:0}@page{size:A4;margin:14mm}}.doc{color:#243042;font-size:12.5px;line-height:1.5}.doc *{box-sizing:border-box}.doc-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;padding-bottom:14px;border-bottom:3px solid var(--brand)}.doc-brand{display:flex;gap:12px;align-items:center}.doc-mark{width:46px;height:46px;flex:none}.doc-mark svg{width:100%;height:100%;display:block}.doc-co{font-size:19px;font-weight:800;color:var(--brand-dark);letter-spacing:-.01em}.doc-co span{color:var(--accent)}.doc-co-sub{font-size:11px;color:#5c6470;font-weight:600}.doc-co-contact{font-size:10.5px;color:#6b7280;margin-top:2px}.doc-devis-box{text-align:right;min-width:150px}.doc-devis-box .dl{display:inline-block;background:var(--brand);color:#fff;font-weight:800;letter-spacing:2px;font-size:12px;padding:3px 12px;border-radius:4px;-webkit-print-color-adjust:exact;print-color-adjust:exact}.doc-devis-box .dn{font-size:15px;font-weight:800;color:var(--brand-dark);margin-top:6px}.doc-devis-box .dd{font-size:11px;color:#6b7280}.doc-parties{display:flex;gap:14px;margin:16px 0}.doc-party{flex:1 1;background:#f6f3ec;border:1px solid #ece4d6;border-radius:8px;padding:10px 12px;-webkit-print-color-adjust:exact;print-color-adjust:exact}.doc-party .pl{font-size:9.5px;text-transform:uppercase;letter-spacing:1.2px;font-weight:700;color:var(--accent);margin-bottom:3px}.doc-party .pn{font-weight:800;font-size:13px;color:var(--ink)}.doc-table{width:100%;border-collapse:collapse;margin-top:6px}.doc-table thead th{background:var(--brand);color:#fff;text-align:left;padding:8px 10px;font-size:11px;font-weight:700;-webkit-print-color-adjust:exact;print-color-adjust:exact}.doc-table td.r,.doc-table th.r{text-align:right;white-space:nowrap}.doc-table tbody td{padding:8px 10px;border-bottom:1px solid #ece4d6;vertical-align:top}.doc-table tbody tr:nth-child(2n) td{background:#faf8f3;-webkit-print-color-adjust:exact;print-color-adjust:exact}.doc-table .desc{font-weight:600;color:var(--ink)}.doc-bottom{display:flex;gap:16px;margin-top:16px;align-items:flex-start}.doc-conditions{flex:1 1;font-size:10.5px;color:#5c6470}.doc-conditions .ct{font-size:10px;text-transform:uppercase;letter-spacing:1px;font-weight:800;color:var(--brand-dark);margin-bottom:5px}.doc-conditions ul{margin:0;padding-left:14px}.doc-conditions li{margin-bottom:2px}.doc-notes{margin-top:8px;background:#f6f3ec;border-radius:6px;padding:7px 9px;-webkit-print-color-adjust:exact;print-color-adjust:exact}.doc-totals{width:244px;flex:none;border:1px solid #ece4d6;border-radius:8px;overflow:hidden}.doc-totals .row{display:flex;justify-content:space-between;gap:10px;padding:6px 12px;font-size:12px}.doc-totals .row span:last-child{white-space:nowrap;font-weight:600}.doc-totals .row.rem span{color:var(--accent)}.doc-totals .row.grand{background:var(--brand);color:#fff;font-weight:800;font-size:14.5px;-webkit-print-color-adjust:exact;print-color-adjust:exact}.doc-totals .row.grand span:last-child{font-weight:800}.doc-totals .row.acc{background:#f6f3ec;-webkit-print-color-adjust:exact;print-color-adjust:exact}.doc-sign{display:flex;gap:16px;margin-top:22px}.doc-sign .sbox{flex:1 1;border:1px solid #d8d2c6;border-radius:8px;padding:9px 11px;min-height:78px}.doc-sign .sbox.accent{border-color:var(--brand)}.doc-sign .sl{font-weight:800;font-size:11px;color:var(--brand-dark)}.doc-sign .shint{margin-top:2px}.doc-foot,.doc-sign .shint{font-size:9.5px;color:#9aa0a8}.doc-foot{margin-top:18px;padding-top:8px;border-top:1px solid #ece4d6;text-align:center}@media (max-width:620px){.doc-head{flex-direction:column;gap:10px}.doc-devis-box{text-align:left;min-width:0}.doc-bottom,.doc-parties,.doc-sign{flex-direction:column}.doc-totals{width:100%}}.stats{display:flex;flex-wrap:wrap;gap:.5rem;margin:1.2rem 0 .2rem}.stats div{background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:.5rem .8rem;font-size:.82rem;color:var(--ink-soft)}.stats div b{font-size:1.05rem;color:var(--ink);margin-right:.35rem}.stats div.ok b{color:var(--ok)}.rowinfo{cursor:pointer;border-radius:8px;padding:2px 4px;margin:-2px -4px;transition:background .12s ease}.rowinfo:hover{background:rgba(42,71,103,.05)}.presta-toggles{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));grid-gap:.5rem;gap:.5rem}.ptoggle{display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto auto;grid-gap:0 .5rem;gap:0 .5rem;text-align:left;border:1px solid var(--line);background:#fff;border-radius:12px;padding:.6rem .75rem;transition:border-color .12s ease,background .12s ease}.ptoggle .pt-check{grid-row:1/3;align-self:center;width:26px;height:26px;border-radius:50%;display:grid;place-items:center;font-weight:800;background:var(--surface-2);color:var(--brand-dark)}.ptoggle .pt-label{font-weight:700;font-size:.9rem;color:var(--ink)}.ptoggle .pt-price{font-size:.78rem;color:var(--ink-soft)}.ptoggle.on,.ptoggle:hover{border-color:var(--brand)}.ptoggle.on{background:rgba(42,71,103,.06)}.ptoggle.on .pt-check{background:var(--ok);color:#fff}.tagauto{background:var(--surface-2);color:var(--brand-dark);border-radius:6px}.tagauto,.tagmanuel{padding:0 .35rem;font-size:.62rem;letter-spacing:.04em;margin-left:.3rem}.tagmanuel{border:none;background:rgba(192,138,62,.18);color:#6f4a23;border-radius:6px;cursor:pointer}.remise{display:grid;grid-template-columns:1fr 72px;grid-gap:.4rem;gap:.4rem}.remise input,.remise select{border:1px solid var(--line);border-radius:10px;background:#fff;padding:.62rem .7rem;min-height:44px}.tarif-card{margin-bottom:.8rem}.tiers{display:grid;grid-gap:.4rem;gap:.4rem;margin-top:.3rem}.tier{display:flex;flex-wrap:wrap;align-items:center;gap:.4rem}.tier input{width:96px;border:1px solid var(--line);border-radius:8px;padding:.4rem .55rem;min-height:40px;background:#fff}.tier-lbl{font-size:.82rem;color:var(--ink-soft)}.del.sm{height:40px;width:40px;border:1px solid var(--line);background:#fff;color:var(--danger);border-radius:8px}.aides-panel{margin-top:.9rem}.aides-result{display:grid;grid-gap:.4rem;gap:.4rem;margin-top:.6rem}.aides-result .row{display:flex;justify-content:space-between;gap:.8rem;align-items:baseline;border-bottom:1px solid var(--line);padding-bottom:.35rem;font-size:.9rem}.aides-result .row b,.aides-result .row span:last-child{text-align:right}.aides-result .row.ok b{color:var(--ok);font-size:1.15rem}.aides-result .row.warn span:last-child{color:var(--danger)}.checkline{display:flex;flex-wrap:wrap;gap:.45rem 1.1rem;margin:.1rem 0 .7rem}.checkline label{display:flex;align-items:center;gap:.4rem;font-size:.88rem;font-weight:600;color:var(--ink-soft);text-transform:none;letter-spacing:0}.checkline input[type=checkbox]{width:20px;height:20px;min-height:auto;accent-color:var(--brand);margin:0}.visite-warn{background:rgba(180,35,24,.08);border:1px solid #eec9c5;color:var(--danger);border-radius:10px;padding:.6rem .8rem;font-size:.86rem;margin-top:.4rem}