:root{--bg:#faf7f2;--surface:#fff;--soft:#f4efe7;--border:#e8e1d6;--text:#2b2724;--muted:#847b72;--accent:#3f7a5f;--accent-soft:#e6f0ea;--accent-dark:#2f5e48;--rose:#c96f78;--amber:#b7791f;--amber-soft:#fbf1df;--red:#c0453d;--red-soft:#fbe7e5;--green:#2f855a;--green-soft:#e3f3ea;--blue:#3b6ea8;--blue-soft:#e5eef8;--violet:#7a55b0;--violet-soft:#efe8f8;--radius:12px;--shadow:0 1px 2px #3c28140d, 0 4px 16px #3c28140d;--serif:"Iowan Old Style", "Palatino Linotype", Palatino, Georgia, serif;color:var(--text);background:var(--bg);font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,sans-serif;font-size:15px;line-height:1.45}*{box-sizing:border-box}body{margin:0}h1,h2,h3{margin:0;font-weight:600}h1{font-family:var(--serif);font-size:1.75rem}h2{font-size:1.05rem}h3{font-size:.95rem}a{color:var(--accent-dark)}button{font:inherit;color:inherit;cursor:pointer}input,select,textarea{font:inherit;color:inherit;border:1px solid var(--border);background:var(--surface);border-radius:8px;width:100%;padding:8px 10px;transition:border-color .15s,box-shadow .15s}input:focus,select:focus,textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);outline:none}input[type=checkbox]{width:18px;height:18px;accent-color:var(--accent);flex:none}input[type=range]{accent-color:var(--accent);border:none;padding:0}textarea{resize:vertical}.app{min-height:100vh;display:flex}.sidebar{border-right:1px solid var(--border);background:var(--surface);flex:none;width:240px;height:100vh;padding:20px 12px;position:sticky;top:0}.brand{align-items:center;gap:10px;padding:0 10px 20px;display:flex}.brand-heart{color:var(--rose)}.brand-title{font-family:var(--serif);font-size:1.1rem;font-weight:600}.brand-sub{color:var(--muted);font-size:.8rem}.nav-link{color:var(--text);border-radius:8px;align-items:center;gap:10px;margin-bottom:2px;padding:9px 12px;text-decoration:none;display:flex}.nav-link:hover{background:var(--soft)}.nav-link.on{background:var(--accent-soft);color:var(--accent-dark);font-weight:600}.content{flex-direction:column;flex:1;gap:18px;min-width:0;max-width:1200px;padding:28px 32px 80px;display:flex}.row{align-items:center;gap:10px;display:flex}.row.wrap{flex-wrap:wrap}.gap-s{gap:6px}.gap-l{gap:24px}.grow{flex:1;min-width:0}.spacer{flex:1}.stack{flex-direction:column;gap:14px;display:flex}.muted{color:var(--muted)}.small{font-size:.85rem}.center{text-align:center}.nowrap{white-space:nowrap}.ellipsis{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.pre{white-space:pre-wrap}.warn{color:var(--red)}.grid-2,.grid-3{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 16px;display:grid}.grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.span-2{grid-column:1/-1}.print-only{display:none}.page-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:16px;display:flex}.page-head p{margin:4px 0 0}.card>.page-head{margin-bottom:12px}.card>.page-head h1{font-size:1.2rem}.page-actions{flex-wrap:wrap;gap:8px;display:flex}.btn{border:1px solid var(--border);background:var(--surface);white-space:nowrap;color:var(--text);border-radius:8px;justify-content:center;align-items:center;gap:6px;padding:8px 14px;font-weight:500;text-decoration:none;transition:background .15s,border-color .15s;display:inline-flex}.btn:hover:not(:disabled){background:var(--soft)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn-primary:hover:not(:disabled){background:var(--accent-dark)}.btn-ghost{background:0 0;border-color:#0000}.btn-light{background:#ffffffd9;border-color:#0000}.btn-small{padding:4px 10px;font-size:.85rem}.btn-dashed{color:var(--muted);background:0 0;border-style:dashed;width:100%;padding:10px}.danger{color:var(--red)}.icon-btn{color:var(--muted);background:0 0;border:none;border-radius:6px;padding:4px;display:inline-flex}.icon-btn:hover{background:var(--soft);color:var(--text)}.link,.link-plain{text-align:left;background:0 0;border:none;padding:0}.link{color:var(--accent-dark);font-weight:500}.link:hover{text-decoration:underline}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:18px}.card-soft{background:var(--soft);box-shadow:none;flex-direction:column;gap:12px;display:flex}.cards{grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:12px;display:grid}.cards-wide{grid-template-columns:repeat(auto-fill,minmax(320px,1fr))}.vendor-card,.visit-summary{color:inherit;text-align:left;flex-direction:column;gap:6px;padding:14px;text-decoration:none;transition:transform .12s,box-shadow .12s;display:flex}.vendor-card:hover,.visit-summary:hover,.kpi:hover{transform:translateY(-1px);box-shadow:0 6px 20px #3c281414}.dimmed{opacity:.55}.vendor-meta{margin-top:4px}.price{font-size:1.05rem;font-weight:600}.price.over{color:var(--red)}.next{color:var(--accent-dark);align-items:center;gap:4px;display:flex}.next.late{color:var(--amber);font-weight:500}.group{flex-direction:column;gap:10px;display:flex}.group-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.group-head select{width:auto}.section-title{border-top:1px solid var(--border);margin-top:6px;padding-top:12px}.badge{white-space:nowrap;border-radius:999px;align-items:center;padding:2px 8px;font-size:.75rem;font-weight:600;display:inline-flex}.badge-gray{background:var(--soft);color:var(--muted)}.badge-blue{background:var(--blue-soft);color:var(--blue)}.badge-violet{background:var(--violet-soft);color:var(--violet)}.badge-amber{background:var(--amber-soft);color:var(--amber)}.badge-green{background:var(--green-soft);color:var(--green)}.badge-red{background:var(--red-soft);color:var(--red)}.chips{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.chip{border:1px solid var(--border);background:var(--surface);border-radius:999px;padding:4px 12px;font-size:.85rem}.chip.on{background:var(--red-soft);border-color:var(--red);color:var(--red);font-weight:600}.chip-input{border-radius:999px;width:160px;padding:4px 12px;font-size:.85rem}.field{flex-direction:column;gap:5px;min-width:0;display:flex}.field-label{color:var(--muted);font-size:.8rem;font-weight:600}.field-hint{color:var(--muted);font-size:.78rem}.check{cursor:pointer;align-items:center;gap:8px;display:inline-flex}.toolbar{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.toolbar select{width:auto}.search{border:1px solid var(--border);background:var(--surface);color:var(--muted);border-radius:8px;flex:1;align-items:center;gap:6px;min-width:200px;max-width:320px;padding:0 10px;display:flex}.search input{border:none;padding:8px 0;box-shadow:none!important}.seg{background:var(--soft);border-radius:9px;flex-wrap:wrap;gap:2px;padding:3px;display:inline-flex}.seg button{color:var(--muted);background:0 0;border:none;border-radius:7px;padding:5px 12px;font-size:.88rem}.seg button.on{background:var(--surface);color:var(--text);font-weight:600;box-shadow:0 1px 2px #00000014}.callout{text-align:left;border:1px solid #0000;border-radius:10px;align-items:center;gap:10px;padding:10px 14px;font-size:.92rem;display:flex}.callout-amber{background:var(--amber-soft);border-color:#f0dcb8}.callout-accent{background:var(--accent-soft);border-color:#cfe1d6}.callout-btn{width:100%}.impact{color:var(--accent-dark)}.progress{background:var(--soft);border-radius:999px;min-width:60px;height:8px;margin-top:6px;overflow:hidden}.progress-bar{border-radius:999px;height:100%;transition:width .3s}.tone-accent{background:var(--accent)}.tone-green{background:var(--green)}.tone-amber{background:var(--amber)}.tone-red{background:var(--red)}.stats{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;display:grid}.stat{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);text-align:left;padding:12px 14px}.stat-btn:hover{border-color:var(--accent)}.stat-label{color:var(--muted);align-items:center;gap:4px;font-size:.8rem;font-weight:600;display:flex}.stat-value{font-size:1.5rem;font-weight:700;font-family:var(--serif)}.stat-sub{color:var(--muted);font-size:.8rem}.stat-red .stat-value{color:var(--red)}.stat-amber .stat-value{color:var(--amber)}.table-wrap{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow-x:auto}.modal .table-wrap{border:none}.table{border-collapse:collapse;width:100%}.table th{text-align:left;color:var(--muted);border-bottom:1px solid var(--border);white-space:nowrap;padding:10px 12px;font-size:.78rem;font-weight:600}.table td{border-bottom:1px solid var(--border);vertical-align:middle;padding:8px 12px}.table tbody tr:last-child td{border-bottom:none}.table tfoot td{border-top:1px solid var(--border);background:var(--soft);border-bottom:none}.table .num{text-align:right;white-space:nowrap}.table td input,.table td select{padding:5px 8px}.input-num{text-align:right;width:110px}.neg{color:var(--red);font-weight:600}.pos{color:var(--green)}.row-late td{background:var(--red-soft)}.row-done td{opacity:.55}.pill{border:none;border-radius:999px;width:auto;font-size:.82rem;font-weight:600;padding:3px 10px!important}.pill-green{background:var(--green-soft);color:var(--green)}.pill-red{background:var(--red-soft);color:var(--red)}.pill-amber{background:var(--amber-soft);color:var(--amber)}.planning td{padding:4px 6px}.planning td input{background:0 0;border-color:#0000}.planning td input:hover{border-color:var(--border)}.compare td:first-child{min-width:180px;font-weight:500}.compare th,.compare td:not(:first-child){text-align:center;min-width:140px}.tri-cell{font-weight:700}.tri-cell-ok{background:var(--green-soft);color:var(--green)}.tri-cell-ko{background:var(--red-soft);color:var(--red)}.tri-cell-maybe{background:var(--amber-soft);color:var(--amber)}.modal-backdrop{z-index:50;background:#2b272466;justify-content:center;align-items:flex-start;padding:5vh 16px;animation:.15s fade;display:flex;position:fixed;inset:0;overflow-y:auto}.modal{background:var(--surface);border-radius:16px;flex-direction:column;width:100%;max-width:560px;animation:.18s pop;display:flex;box-shadow:0 20px 60px #0003}.modal-wide{max-width:820px}.modal-head,.modal-foot{align-items:center;gap:10px;padding:16px 20px;display:flex}.modal-head{border-bottom:1px solid var(--border)}.modal-head h2{font-family:var(--serif);font-size:1.3rem}.modal-head .icon-btn{margin-left:auto}.modal-body{flex-direction:column;gap:14px;padding:18px 20px;display:flex}.modal-foot{border-top:1px solid var(--border);background:var(--surface);border-radius:0 0 16px 16px;position:sticky;bottom:0}@keyframes fade{0%{opacity:0}}@keyframes pop{0%{opacity:0;transform:translateY(8px)scale(.98)}}.tabs{border-bottom:1px solid var(--border);gap:4px;margin:-6px 0 4px;display:flex;overflow-x:auto}.tab{color:var(--muted);white-space:nowrap;background:0 0;border:none;border-bottom:2px solid #0000;padding:8px 12px;font-weight:500}.tab.on{color:var(--accent-dark);border-bottom-color:var(--accent)}.stars{gap:1px;display:inline-flex}.star{color:#ddd2c3;background:0 0;border:none;padding:1px;display:inline-flex}.star.on{color:#e0a43a}.star:disabled{cursor:default}.tri{border:1px solid var(--border);border-radius:8px;flex:none;display:inline-flex;overflow:hidden}.tri-btn{background:var(--surface);border:none;min-width:40px;padding:4px 10px;font-size:.82rem}.tri-btn+.tri-btn{border-left:1px solid var(--border)}.tri-btn.on.tri-green{background:var(--green-soft);color:var(--green);font-weight:700}.tri-btn.on.tri-red{background:var(--red-soft);color:var(--red);font-weight:700}.tri-btn.on.tri-amber{background:var(--amber-soft);color:var(--amber);font-weight:700}.checks{border:1px solid var(--border);border-radius:10px;flex-direction:column;margin-top:6px;display:flex}.check-row{justify-content:space-between;align-items:center;gap:12px;padding:7px 12px;font-size:.9rem;display:flex}.check-row+.check-row{border-top:1px solid var(--border)}.timeline{border-left:2px solid var(--border);margin:0;padding:0 0 0 8px;list-style:none}.timeline li{padding:0 0 14px 16px;position:relative}.timeline-dot{background:var(--accent);border:2px solid var(--surface);border-radius:50%;width:12px;height:12px;position:absolute;top:4px;left:-7px}.timeline-dot[data-dir=Reçu]{background:var(--blue)}.quote{padding:14px}.quote-booked{border-color:var(--green);background:var(--green-soft)}.quote-amount{font-family:var(--serif);font-size:1.35rem;font-weight:700}.quote-actions{margin-top:8px}.steps{flex-wrap:wrap;gap:6px;margin:0;padding:0;list-style:none;display:flex}.steps li{background:var(--soft);color:var(--muted);border-radius:999px;padding:4px 10px 4px 8px;font-size:.8rem}.steps li:before{content:"○ "}.steps li.done{background:var(--green-soft);color:var(--green);font-weight:600}.steps li.done:before{content:"✓ "}.gate{place-items:center;min-height:100vh;padding:20px;display:grid}.gate-card{text-align:center;flex-direction:column;align-items:center;gap:14px;max-width:380px;padding:32px 28px;display:flex}.gate-card p{margin:0}.gate-local{border-top:1px solid var(--border);flex-direction:column;align-items:center;gap:10px;margin-top:8px;padding-top:16px;display:flex}.gate-title{font-family:var(--serif);margin:0}.sync-notice{z-index:60;background:var(--surface);border:1px solid var(--rose);border-radius:var(--radius);max-width:min(560px,100vw - 24px);box-shadow:var(--shadow);align-items:center;gap:12px;padding:10px 14px;font-size:.9rem;display:flex;position:fixed;top:12px;left:50%;transform:translate(-50%)}.empty{text-align:center;background:var(--surface);border:1px dashed var(--border);border-radius:var(--radius);flex-direction:column;align-items:center;gap:8px;padding:36px 20px;display:flex}.empty p{max-width:440px;margin:0 0 8px}.empty-icon{background:var(--accent-soft);width:56px;height:56px;color:var(--accent);border-radius:50%;place-items:center;display:grid}.budget-hero{flex-direction:column;gap:18px;display:flex}.budget-hero .stat{background:var(--soft);border:none}.gauge-track{background:var(--soft);border-radius:999px;height:18px;display:flex;position:relative;overflow:hidden}.gauge-paid{background:var(--accent-dark)}.gauge-committed{background:var(--accent)}.gauge-projected{background:repeating-linear-gradient(45deg,#a8c9b6,#a8c9b6 6px,#c4dccd 6px 12px)}.gauge-reserve{border-left:2px dashed var(--amber);background:#b7791f14;position:absolute;top:0;bottom:0;right:0}.legend{flex-wrap:wrap;align-items:center;gap:14px;margin-top:8px;display:flex}.dot{vertical-align:-1px;border-radius:3px;width:10px;height:10px;display:inline-block}.dot-paid{background:var(--accent-dark)}.dot-committed{background:var(--accent)}.dot-projected{background:#a8c9b6}.dot-reserve{border:1px dashed var(--amber);background:#b7791f4d}.task-group{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.task-group-head{background:var(--surface);text-align:left;border:none;align-items:center;gap:8px;width:100%;padding:12px 14px;display:flex}.mini-progress{width:120px;margin-left:auto}.mini-progress .progress{margin:0}.tasks{margin:0;padding:0;list-style:none}.task{border-top:1px solid var(--border);align-items:center;gap:12px;padding:9px 14px;display:flex}.task:hover{background:#fdfbf8}.task-title{flex:1;min-width:0}.task-meta{flex:none;align-items:center;gap:8px;display:flex}.task-done .task-title{color:var(--muted);text-decoration:line-through}.task-cancel{opacity:.5}.task-selected,.task-selected:hover{background:var(--soft)}.bulk-bar{z-index:30;background:var(--surface);border:1px solid var(--rose);border-radius:var(--radius);box-shadow:var(--shadow);flex-wrap:wrap;align-items:center;gap:10px;padding:10px 14px;display:flex;position:sticky;top:0}.bulk-bar select{width:auto}.hero{border:1px solid var(--border);background:linear-gradient(120deg,#e7efe9 0%,#f6e9e4 100%);border-radius:18px;justify-content:space-between;align-items:center;gap:16px;padding:28px;display:flex}.hero-kicker{color:var(--accent-dark);text-transform:uppercase;letter-spacing:.08em;font-size:.85rem;font-weight:600}.hero-title{margin-top:4px;font-size:2.2rem}.hero-sub{color:var(--muted);font-size:1rem;font-weight:400}.kpis{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;display:grid}.kpi{color:inherit;flex-direction:column;gap:2px;text-decoration:none;transition:transform .12s,box-shadow .12s;display:flex}.kpi-label{color:var(--muted);align-items:center;gap:6px;font-size:.85rem;font-weight:600;display:flex}.kpi-value{font-family:var(--serif);font-size:1.7rem;font-weight:700}.dash-grid{grid-template-columns:1.2fr 1fr;align-items:start;gap:18px;display:grid}.actions,.tips{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.action{color:inherit;border-radius:8px;align-items:center;gap:10px;padding:9px 10px;text-decoration:none;display:flex}.action:hover{background:var(--soft)}.action-icon{background:var(--accent-soft);width:30px;height:30px;color:var(--accent-dark);border-radius:8px;flex:none;place-items:center;display:grid}.action.late .action-icon{background:var(--amber-soft);color:var(--amber)}.tip{background:var(--soft);border-radius:10px;align-items:flex-start;gap:10px;padding:10px 12px;font-size:.9rem;display:flex}.tip>svg{flex:none;margin-top:2px}.tip-accent>svg{color:var(--accent)}.tip-amber{background:var(--amber-soft)}.tip-amber>svg{color:var(--amber)}.tip-red{background:var(--red-soft)}.tip-red>svg{color:var(--red)}.tip-green{background:var(--green-soft)}.key-vendors{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;display:grid}.key-vendor{background:var(--soft);color:inherit;border-radius:10px;flex-direction:column;align-items:flex-start;gap:4px;padding:12px;text-decoration:none;display:flex}.key-vendor:hover{background:var(--accent-soft)}.req-list{border:1px solid var(--border);border-radius:10px;margin:0;padding:0;list-style:none}.req-list li{align-items:center;padding:7px 12px;display:flex}.req-list li+li{border-top:1px solid var(--border)}.recap{white-space:pre-wrap;background:var(--soft);border-radius:10px;margin:0;padding:14px;font-family:inherit;font-size:.9rem}@media (width<=900px){.dash-grid{grid-template-columns:1fr}}@media (width<=760px){.app{flex-direction:column}.sidebar{border-right:none;border-top:1px solid var(--border);z-index:40;width:auto;height:auto;padding:4px;position:fixed;inset:auto 0 0}.brand{display:none}.sidebar nav{display:flex;overflow-x:auto}.nav-link{text-align:center;flex-direction:column;gap:2px;min-width:72px;padding:6px 8px;font-size:.68rem}.content{padding:18px 14px 96px}.grid-2,.grid-3{grid-template-columns:1fr}.hide-sm{display:none}.hero{flex-direction:column;align-items:flex-start;padding:20px}.hero-title{font-size:1.7rem}.modal-backdrop{padding:0}.modal{border-radius:0;min-height:100vh}.mini-progress{width:60px}}@media print{.sidebar,.page-actions,.no-print,.toolbar,.btn{display:none!important}.content{padding:0}:is(body:has(.print-only) .content>:not(.group),body:has(.print-only) .group>:not(.print-only)){display:none!important}.print-only{display:block}.print-list{padding:0;line-height:2;list-style:none}}
