:root{
  --bg:#0b0d10;--panel:#14181e;--panel2:#1a2027;--text:#f5f7fa;--muted:#9aa4b2;
  --accent:#fade5b;--accent2:#ffef9b;--ok:#5edc8a;--warn:#ffbf5b;--bad:#ff6b6b;--line:#2b333e;
  --shadow:0 10px 30px rgba(0,0,0,.22);--radius:18px;
}
:root.light{
  --bg:#f3f5f7;--panel:#fff;--panel2:#f7f9fb;--text:#111820;--muted:#64707c;
  --accent:#d7b900;--accent2:#7c6800;--ok:#168845;--warn:#b66b00;--bad:#c93d3d;--line:#dfe5eb;
  --shadow:0 8px 26px rgba(20,30,40,.10);
}
*{box-sizing:border-box} body{margin:0;background:var(--bg);color:var(--text);font-family:Inter,ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;min-height:100vh}
button,input,select,textarea{font:inherit}.topbar{position:sticky;top:0;z-index:30;height:68px;display:flex;align-items:center;gap:10px;padding:10px 14px;background:color-mix(in srgb,var(--bg) 88%,transparent);backdrop-filter:blur(14px);border-bottom:1px solid var(--line)}
.brand{display:flex;align-items:center;gap:10px;flex:1;cursor:pointer}.brand strong{display:block;font-size:18px}.brand small{display:block;color:var(--muted);font-size:11px;margin-top:1px}.logo{width:38px;height:38px;border-radius:12px;background:var(--accent);color:#111;display:grid;place-items:center;font-weight:900;font-size:20px;box-shadow:var(--shadow)}
.icon-btn{width:40px;height:40px;border:1px solid var(--line);background:var(--panel);color:var(--text);border-radius:12px;font-size:20px}.app{max-width:820px;margin:0 auto;padding:16px 14px 98px}.hero{padding:8px 2px 18px}.hero h1{font-size:28px;line-height:1.05;margin:4px 0 8px}.hero p{margin:0;color:var(--muted);line-height:1.45}.badge{display:inline-flex;gap:7px;align-items:center;padding:7px 10px;border-radius:999px;background:color-mix(in srgb,var(--accent) 14%,var(--panel));color:var(--accent2);font-size:12px;font-weight:700;border:1px solid color-mix(in srgb,var(--accent) 36%,var(--line))}
.grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:11px}.tile{border:1px solid var(--line);background:linear-gradient(160deg,var(--panel),var(--panel2));border-radius:var(--radius);padding:16px;text-align:left;color:var(--text);min-height:132px;box-shadow:var(--shadow);display:flex;flex-direction:column;justify-content:space-between;cursor:pointer}.tile:active{transform:scale(.985)}.tile .emoji{font-size:28px}.tile h3{margin:12px 0 5px;font-size:16px}.tile p{margin:0;color:var(--muted);font-size:12px;line-height:1.35}.tile.accent{border-color:color-mix(in srgb,var(--accent) 50%,var(--line));background:linear-gradient(160deg,color-mix(in srgb,var(--accent) 12%,var(--panel)),var(--panel))}
.section-title{display:flex;align-items:end;justify-content:space-between;gap:10px;margin:6px 0 12px}.section-title h2{margin:0;font-size:22px}.section-title p{margin:3px 0 0;color:var(--muted);font-size:12px}.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:15px;box-shadow:var(--shadow);margin-bottom:12px}.card h3{margin:0 0 10px;font-size:15px}.card p{color:var(--muted);line-height:1.45}.field-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.field{margin-bottom:11px}.field label{display:block;font-size:12px;color:var(--muted);margin-bottom:6px}.field input,.field select,.field textarea{width:100%;border-radius:12px;border:1px solid var(--line);background:var(--panel2);color:var(--text);padding:12px 12px;outline:none}.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--accent)}.unit{position:relative}.unit input{padding-right:52px}.unit span{position:absolute;right:12px;bottom:12px;color:var(--muted);font-size:12px}.hint{font-size:12px;color:var(--muted);line-height:1.45}.warning{border-left:4px solid var(--warn);background:color-mix(in srgb,var(--warn) 9%,var(--panel));padding:12px;border-radius:12px;margin:10px 0;font-size:12px;line-height:1.45}.danger{border-left-color:var(--bad);background:color-mix(in srgb,var(--bad) 9%,var(--panel))}.okbox{border-left-color:var(--ok);background:color-mix(in srgb,var(--ok) 9%,var(--panel))}.btn{border:0;border-radius:13px;padding:13px 16px;font-weight:800;cursor:pointer}.btn.primary{background:var(--accent);color:#121212;width:100%}.btn.secondary{background:var(--panel2);color:var(--text);border:1px solid var(--line);width:100%}.btn-row{display:grid;grid-template-columns:1fr 1fr;gap:9px}.result-card{display:flex;gap:12px;align-items:flex-start;border-radius:16px;padding:15px;border:1px solid var(--line);background:var(--panel);margin:12px 0}.result-card.ok{border-color:color-mix(in srgb,var(--ok) 50%,var(--line))}.result-card.warn{border-color:color-mix(in srgb,var(--warn) 50%,var(--line))}.result-card.bad{border-color:color-mix(in srgb,var(--bad) 55%,var(--line))}.result-icon{font-size:24px}.result-title{margin:0 0 4px;font-size:16px}.result-text{margin:0!important;color:var(--muted);font-size:13px;line-height:1.45}.metrics{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;margin:10px 0}.metric{padding:12px;background:var(--panel2);border-radius:13px;border:1px solid var(--line)}.metric small{color:var(--muted);display:block}.metric strong{display:block;font-size:20px;margin-top:3px}.pill{display:inline-block;padding:5px 9px;border-radius:999px;font-size:11px;font-weight:800;border:1px solid var(--line)}.pill.ok{color:var(--ok)}.pill.warn{color:var(--warn)}.pill.bad{color:var(--bad)}.history-item{padding:13px 0;border-bottom:1px solid var(--line);display:grid;grid-template-columns:1fr auto;gap:10px}.history-item:last-child{border:0}.history-item h4{margin:0 0 4px}.history-item p{margin:0;color:var(--muted);font-size:12px}.history-actions{display:flex;gap:6px}.mini-btn{border:1px solid var(--line);background:var(--panel2);color:var(--text);border-radius:10px;padding:7px 9px}.guide-step{display:grid;grid-template-columns:32px 1fr;gap:10px;margin:11px 0}.step-num{width:30px;height:30px;border-radius:10px;background:var(--accent);color:#111;display:grid;place-items:center;font-weight:900}.guide-step p{margin:0;color:var(--muted);line-height:1.4;font-size:13px}.bottom-nav{position:fixed;left:0;right:0;bottom:0;z-index:40;display:grid;grid-template-columns:repeat(4,1fr);background:color-mix(in srgb,var(--bg) 90%,transparent);backdrop-filter:blur(16px);border-top:1px solid var(--line);padding:7px max(8px,env(safe-area-inset-right)) calc(7px + env(safe-area-inset-bottom)) max(8px,env(safe-area-inset-left))}.bottom-nav button{border:0;background:transparent;color:var(--muted);padding:5px 0}.bottom-nav button span{display:block;font-size:20px;line-height:1}.bottom-nav button small{font-size:10px}.bottom-nav button.active{color:var(--accent)}.empty{text-align:center;padding:40px 20px;color:var(--muted)}.switch{display:flex;justify-content:space-between;gap:10px;align-items:center;padding:12px 0;border-bottom:1px solid var(--line)}.switch:last-child{border:0}.switch input{transform:scale(1.2)}.version{color:var(--muted);font-size:11px;text-align:center;margin-top:20px}.subtabs{display:flex;gap:7px;overflow:auto;padding-bottom:8px}.subtabs button{white-space:nowrap;border:1px solid var(--line);background:var(--panel);color:var(--muted);padding:8px 11px;border-radius:999px}.subtabs button.active{color:#111;background:var(--accent);border-color:var(--accent)}

.measure-input{display:grid;grid-template-columns:minmax(0,1fr) 92px;gap:7px}.measure-input input,.measure-input select{width:100%;border-radius:12px;border:1px solid var(--line);background:var(--panel2);color:var(--text);padding:12px;outline:none}.measure-input input:focus,.measure-input select:focus{border-color:var(--accent)}.measure-input select{font-weight:800;text-align:center}.field-help{margin:7px 2px 0!important;font-size:11px!important;color:var(--muted)!important;line-height:1.4!important}
@media(min-width:650px){.grid{grid-template-columns:repeat(4,1fr)}.tile{min-height:145px}.field-grid.three{grid-template-columns:repeat(3,1fr)}}

.probe-card{border-color:color-mix(in srgb,var(--accent) 28%,var(--line))}
.probe-head{display:flex;gap:10px;align-items:flex-start;margin-bottom:10px}.probe-head h3{margin:0 0 3px}.probe-head p{margin:0!important;font-size:12px}.probe-icon{width:34px;height:34px;display:grid;place-items:center;border-radius:10px;background:color-mix(in srgb,var(--accent) 16%,var(--panel2));font-size:18px}.probe-list{display:grid;gap:8px}.probe-step{display:grid;grid-template-columns:28px 1fr;gap:9px;align-items:flex-start;padding:9px;border-radius:12px;background:var(--panel2);border:1px solid var(--line)}.probe-step span{width:24px;height:24px;border-radius:8px;background:var(--accent);color:#111;font-weight:900;display:grid;place-items:center;font-size:12px}.probe-step p{margin:1px 0 0!important;font-size:12px!important;line-height:1.4!important;color:var(--muted)!important}
.action-plan{margin:12px 0;padding:14px;border-radius:16px;border:1px solid color-mix(in srgb,var(--warn) 55%,var(--line));background:color-mix(in srgb,var(--warn) 7%,var(--panel))}.action-plan.bad{border-color:color-mix(in srgb,var(--bad) 58%,var(--line));background:color-mix(in srgb,var(--bad) 7%,var(--panel))}.action-plan h3{margin:0 0 8px;font-size:14px}.action-plan ol{margin:0;padding-left:21px}.action-plan li{color:var(--muted);font-size:12px;line-height:1.45;margin:7px 0}.action-plan li::marker{color:var(--accent);font-weight:900}


/* V0.4 — chantier courant */
.job-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.job-card-head h3{margin:0 0 3px}.job-card-head p{margin:0!important;font-size:12px!important}.job-strip{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 12px;margin:-2px 0 12px;border:1px solid var(--line);background:var(--panel);border-radius:14px;box-shadow:var(--shadow);font-size:12px}.job-strip>div{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.job-strip span{color:var(--muted)}.job-strip .job-icon{color:inherit;margin-right:7px}.history-client{color:var(--accent2)!important;font-weight:700;margin:4px 0!important}.subtabs{scrollbar-width:none}.subtabs::-webkit-scrollbar{display:none}

/* V0.5 — contrôles installation, DAR/PI, rapport */
.terminal-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:10px 0}.terminal-grid>div{padding:12px;border:1px solid var(--line);background:var(--panel2);border-radius:13px}.terminal-grid b{display:block;font-size:13px}.terminal-grid small{display:block;color:var(--muted);margin-top:3px;font-size:11px}.explain-box{padding:12px;border-radius:13px;background:color-mix(in srgb,var(--accent) 10%,var(--panel2));border:1px solid color-mix(in srgb,var(--accent) 30%,var(--line));font-size:12px;line-height:1.55;margin:10px 0}.details-box{border:1px solid var(--line);border-radius:13px;padding:11px;background:var(--panel2);margin:10px 0}.details-box summary{cursor:pointer;font-weight:800;font-size:12px}.report-head{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;border-bottom:1px solid var(--line);padding-bottom:12px;margin-bottom:4px}.report-head h3{font-size:18px}.report-head p{margin:0!important;font-size:12px}.report-logo{flex:none}.report-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;padding:12px 0;border-bottom:1px solid var(--line)}.report-row:last-of-type{border-bottom:0}.report-row small{display:block;color:var(--muted);font-size:10px;margin-top:3px}.report-row p{margin:5px 0 0!important;font-size:12px!important}.report-note{font-size:10px!important;border-top:1px solid var(--line);padding-top:10px;margin-top:12px!important}.subtabs button[data-protection].active{color:#111;background:var(--accent);border-color:var(--accent)}
@media print{body{background:#fff;color:#000}.topbar,.bottom-nav,.no-print,.job-strip,.section-title>.pill{display:none!important}.app{max-width:none;padding:0}.section-title{display:none}.card{box-shadow:none;border:0}.report-card{display:block!important}.report-row,.report-head{border-color:#ccc}.pill{border-color:#999;color:#000!important}.report-note{color:#555!important}}


/* V0.7 — aide DAR/PI chantier */
.tester-card{border-color:color-mix(in srgb,var(--ok) 28%,var(--line))}
.dy-terminals>div:nth-child(2){border-color:color-mix(in srgb,#ff6b6b 45%,var(--line))}
.dy-terminals>div:nth-child(3){border-color:color-mix(in srgb,#ffd65b 45%,var(--line))}
.dy-terminals>div:nth-child(4){border-color:color-mix(in srgb,#5edc8a 45%,var(--line))}
.earth-layout{display:grid;grid-template-columns:auto 1fr auto 1fr auto;align-items:center;gap:8px;margin:14px 0;padding:12px;border:1px solid var(--line);border-radius:14px;background:var(--panel2)}
.earth-node{min-width:58px;text-align:center;padding:8px 7px;border-radius:12px;border:1px solid var(--line);font-weight:900}.earth-node small{display:block;font-weight:500;color:var(--muted);font-size:9px;margin-top:2px}.earth-node.main{border-color:color-mix(in srgb,var(--ok) 45%,var(--line))}.earth-node.p{border-color:color-mix(in srgb,#ffd65b 48%,var(--line))}.earth-node.c{border-color:color-mix(in srgb,#ff6b6b 48%,var(--line))}.earth-line{height:2px;background:var(--line);position:relative;text-align:center;font-size:9px;color:var(--muted);line-height:0}.earth-line::after{content:'';position:absolute;right:-1px;top:-3px;border-left:6px solid var(--line);border-top:4px solid transparent;border-bottom:4px solid transparent}.mini-procedure{margin-top:14px;padding-top:2px}.mini-procedure h3{margin-top:0}
@media(max-width:480px){.earth-layout{grid-template-columns:auto 1fr auto 1fr auto;gap:5px;padding:9px}.earth-node{min-width:47px;font-size:12px;padding:7px 4px}.earth-line{font-size:8px}.dy-terminals{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* V0.7 — mémo choix test d’isolement */
.decision-list{display:grid;gap:10px;margin-top:10px}.decision-row{display:grid;grid-template-columns:38px 1fr;gap:10px;align-items:start;padding:12px;border:1px solid var(--line);border-radius:14px;background:var(--panel2)}.decision-row>span{font-size:24px;line-height:1.2}.decision-row strong{display:block;margin-bottom:3px}.decision-row p{margin:0;color:var(--muted);line-height:1.4}

/* V0.8 — simplification chantier */
.assistant-cta{width:100%;display:grid;grid-template-columns:44px 1fr 22px;gap:12px;align-items:center;text-align:left;margin:0 0 12px;padding:14px;border-radius:18px;border:1px solid color-mix(in srgb,var(--accent) 55%,var(--line));background:linear-gradient(135deg,color-mix(in srgb,var(--accent) 14%,var(--panel)),var(--panel));color:var(--text);box-shadow:var(--shadow);cursor:pointer}.assistant-cta>span{font-size:28px}.assistant-cta strong{display:block;font-size:16px}.assistant-cta small{display:block;color:var(--muted);font-size:12px;margin-top:3px;line-height:1.35}.assistant-cta>b{font-size:28px;color:var(--accent)}
.assistant-plan{margin-top:10px;padding:14px;border:1px solid color-mix(in srgb,var(--accent) 38%,var(--line));border-radius:16px;background:color-mix(in srgb,var(--accent) 6%,var(--panel2))}.assistant-plan h3{margin:0 0 10px}.assistant-plan ol{margin:0 0 14px;padding-left:22px}.assistant-plan li{margin:9px 0;color:var(--muted);font-size:13px;line-height:1.5}.assistant-plan li::marker{color:var(--accent);font-weight:900}
.quick-choice .decision-row p{font-size:12px}.express .advanced-only{display:none!important}.express .details-box.advanced-only{display:none!important}
@media(max-width:480px){.assistant-cta{grid-template-columns:38px 1fr 18px;padding:13px}.assistant-cta>span{font-size:24px}}

/* V1.1 — chantier stabilisé */
.home-actions{display:grid;grid-template-columns:1fr;gap:10px;margin-bottom:12px}.home-actions .assistant-cta{margin:0}.secondary-cta{border-color:var(--line);background:linear-gradient(135deg,var(--panel2),var(--panel))}.secondary-cta>b{color:var(--muted)}
.quick-access{padding:13px}.card-title-row{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}.card-title-row h3{margin:0 0 2px}.card-title-row p{margin:0!important;font-size:11px!important}.quick-tools{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:10px}.quick-tool{display:flex;align-items:center;gap:9px;text-align:left;border:1px solid var(--line);background:var(--panel2);color:var(--text);border-radius:13px;padding:11px;cursor:pointer}.quick-tool>span{font-size:21px}.quick-tool strong{display:block;font-size:12px;line-height:1.25}.quick-tool:active{transform:scale(.985)}
.value-card .big-measure{display:grid;grid-template-columns:minmax(0,1fr) 96px;gap:8px;margin:14px 0}.big-measure input,.big-measure select{border:1px solid color-mix(in srgb,var(--accent) 40%,var(--line));background:var(--panel2);color:var(--text);border-radius:16px;padding:16px 14px}.big-measure input{font-size:30px;font-weight:900;letter-spacing:-.02em}.big-measure select{font-size:18px;font-weight:900;text-align:center}
.device-head{display:flex;gap:12px;align-items:flex-start;margin-bottom:10px}.device-head>span{font-size:30px}.device-head h3{margin:0 0 3px}.device-head p{margin:0!important;font-size:12px!important}.device-card .decision-row{padding:10px}.device-card .decision-row>span{font-size:20px}.plan-badge{display:inline-flex;padding:5px 8px;border-radius:999px;background:color-mix(in srgb,var(--accent) 14%,var(--panel));border:1px solid color-mix(in srgb,var(--accent) 35%,var(--line));font-size:10px;font-weight:800;color:var(--accent2);margin-bottom:8px}.spaced{margin-top:8px}
@media(min-width:650px){.home-actions{grid-template-columns:1fr 1fr}.quick-tools{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media(max-width:480px){.value-card .big-measure{grid-template-columns:minmax(0,1fr) 82px}.big-measure input{font-size:26px;padding:14px 12px}.big-measure select{font-size:16px;padding:14px 8px}}


/* V1.2 — photos chantier / IndexedDB */
.photo-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.photo-card{border:1px solid var(--line);border-radius:15px;overflow:hidden;background:var(--panel2)}.photo-open{display:block;width:100%;padding:0;border:0;background:#000;aspect-ratio:4/3;cursor:pointer}.photo-open img{display:block;width:100%;height:100%;object-fit:cover}.photo-meta{padding:10px}.photo-meta>div{display:flex;justify-content:space-between;gap:8px;align-items:center}.photo-meta small{font-size:9px;color:var(--muted)}.photo-meta p{font-size:11px!important;margin:8px 0!important}.danger-btn{color:var(--bad);width:100%;margin-top:7px}.photo-modal{position:fixed;inset:0;z-index:100;background:rgba(0,0,0,.92);display:flex;flex-direction:column;align-items:center;justify-content:center;padding:20px}.photo-modal img{max-width:100%;max-height:78vh;object-fit:contain;border-radius:12px}.photo-modal>div{max-width:760px;width:100%;color:#fff;padding-top:10px}.photo-modal p{color:#ccc;margin:5px 0}.photo-modal-close{position:absolute;top:max(14px,env(safe-area-inset-top));right:14px;width:44px;height:44px;border-radius:50%;border:1px solid #666;background:#111;color:#fff;font-size:28px}.report-photo-block{margin-top:16px;padding-top:12px;border-top:1px solid var(--line)}.report-photo-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.report-photo-grid figure{margin:0;border:1px solid var(--line);border-radius:12px;overflow:hidden;break-inside:avoid}.report-photo-grid img{display:block;width:100%;aspect-ratio:4/3;object-fit:cover}.report-photo-grid figcaption{padding:7px;font-size:10px;color:var(--muted)}
@media(min-width:650px){.photo-grid{grid-template-columns:repeat(3,minmax(0,1fr));}.report-photo-grid{grid-template-columns:repeat(3,minmax(0,1fr));}}
@media print{.report-photo-grid{grid-template-columns:repeat(3,1fr)}.report-photo-grid figure{border-color:#ccc}.report-photo-grid figcaption{color:#333}.report-photo-grid img{max-height:180px}.photo-capture-card{display:none!important}}
.file-btn{display:flex;align-items:center;justify-content:center;text-align:center;cursor:pointer}.file-btn input{display:none}


/* V1.3 — gestionnaire d’interventions */
.job-strip{gap:10px}.job-strip-actions{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}.job-summary-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px;margin-bottom:12px}.job-stat{padding:12px;border:1px solid var(--line);border-radius:14px;background:var(--panel);box-shadow:var(--shadow)}.job-stat small{display:block;color:var(--muted);font-size:10px}.job-stat strong{display:block;font-size:24px;margin-top:3px}.job-list-card{width:100%;display:block;text-align:left;border:1px solid var(--line);background:var(--panel2);color:var(--text);border-radius:15px;padding:13px;margin:9px 0;cursor:pointer}.job-list-card:active{transform:scale(.992)}.job-list-title{display:flex;align-items:center;justify-content:space-between;gap:8px}.job-list-title strong{font-size:14px}.job-list-main p{margin:3px 0 0!important;font-size:12px!important}.job-list-main small{display:block;color:var(--muted);font-size:10px;margin-top:6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.job-list-foot{display:flex;align-items:center;gap:12px;border-top:1px solid var(--line);margin-top:10px;padding-top:9px;color:var(--muted);font-size:10px}.job-list-foot b{margin-left:auto;font-size:22px;color:var(--accent)}.job-detail-card{border-color:color-mix(in srgb,var(--accent) 28%,var(--line))}.job-detail-head h3{margin:0 0 4px}.job-detail-head p{margin:0!important}.job-detail-meta{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:14px 0}.job-detail-meta>div{padding:10px;border-radius:12px;background:var(--panel2);border:1px solid var(--line)}.job-detail-meta small{display:block;color:var(--muted);font-size:9px}.job-detail-meta strong{display:block;font-size:12px;margin-top:3px}.job-measure{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;padding:11px 0;border-bottom:1px solid var(--line)}.job-measure:last-child{border-bottom:0}.job-measure strong{display:block;font-size:12px}.job-measure small{display:block;color:var(--muted);font-size:9px;margin-top:2px}.job-measure p{margin:5px 0 0!important;font-size:10px!important}.job-photo-preview{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.job-photo-thumb{position:relative;border-radius:12px;overflow:hidden;aspect-ratio:1/1}.job-photo-thumb img{width:100%;height:100%;object-fit:cover}.job-photo-thumb small{position:absolute;left:4px;right:4px;bottom:4px;padding:3px 5px;border-radius:7px;background:rgba(0,0,0,.68);color:#fff;font-size:8px;text-align:left}
@media(min-width:650px){.job-detail-meta{grid-template-columns:repeat(4,minmax(0,1fr))}.job-photo-preview{grid-template-columns:repeat(6,minmax(0,1fr))}}
@media(max-width:480px){.job-summary-grid{gap:6px}.job-stat{padding:10px}.job-stat strong{font-size:20px}.job-strip-actions .mini-btn{font-size:9px;padding:6px}.job-photo-preview{grid-template-columns:repeat(3,minmax(0,1fr))}}

/* ===== V1.4 — rapports professionnels ===== */
.report-editor textarea{min-height:86px;resize:vertical}.mini-actions{display:flex;gap:6px;flex-wrap:wrap}.report-choice-list{display:grid;gap:8px}.report-choice{display:grid;grid-template-columns:auto 1fr;gap:10px;align-items:start;padding:11px;border:1px solid var(--line);border-radius:13px;background:var(--panel2);cursor:pointer}.report-choice input{margin-top:4px;transform:scale(1.15)}.report-choice strong,.report-choice small,.report-choice em{display:block}.report-choice small{font-size:10px;color:var(--muted);margin-top:2px}.report-choice em{font-size:11px;color:var(--muted);font-style:normal;margin-top:5px;line-height:1.35}.report-photo-choices{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.report-photo-choice{position:relative;border:1px solid var(--line);border-radius:13px;overflow:hidden;background:var(--panel2);cursor:pointer}.report-photo-choice>input{position:absolute;z-index:2;top:8px;left:8px;transform:scale(1.2);accent-color:var(--accent)}.report-photo-choice img{display:block;width:100%;aspect-ratio:4/3;object-fit:cover;background:#111}.report-photo-choice span{display:block;padding:8px}.report-photo-choice strong,.report-photo-choice small{display:block}.report-photo-choice small{font-size:10px;color:var(--muted);margin-top:2px;line-height:1.3}.signature-pad{display:block;width:100%;height:150px;border:1px dashed #aab0b8;border-radius:14px;background:#fff;touch-action:none;margin:10px 0}.report-brand-edit{display:grid;grid-template-columns:1fr 120px;gap:12px;align-items:center;margin:10px 0 14px}.brand-preview{height:88px;border:1px solid var(--line);border-radius:14px;background:var(--panel2);display:grid;place-items:center;overflow:hidden}.brand-preview img{max-width:100%;max-height:100%;object-fit:contain;padding:6px}.brand-preview span{display:grid;place-items:center;width:48px;height:48px;border-radius:14px;background:var(--accent);color:#111;font-size:28px;font-weight:900}
.report-paper{margin:14px auto 0;max-width:210mm;background:#fff;color:#111;border-radius:16px;box-shadow:0 12px 34px rgba(0,0,0,.24);overflow:hidden}.pro-report{background:#fff;color:#17191d;padding:16mm 14mm 14mm;min-height:250mm;font-family:Arial,Helvetica,sans-serif}.pro-report *{box-sizing:border-box}.pro-report-header{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:20px;align-items:start;padding-bottom:12px;border-bottom:3px solid #e5c74b}.pro-brand{display:flex;gap:12px;align-items:center;min-width:0}.pro-brand>img{width:68px;height:68px;object-fit:contain}.pro-brand-fallback{width:58px;height:58px;border-radius:14px;background:#e5c74b;color:#111;display:grid;place-items:center;font-size:34px;font-weight:900;flex:none}.pro-brand h1{font-size:22px;margin:0 0 3px;line-height:1.05}.pro-brand p{margin:0 0 5px!important;color:#4e535b!important;font-size:11px!important}.pro-brand small{display:block;color:#686e77;font-size:8.5px;line-height:1.45}.pro-report-id{text-align:right;min-width:155px}.pro-report-id strong{display:block;font-size:10px;letter-spacing:.12em;color:#555}.pro-report-id span{display:block;font-size:15px;font-weight:800;margin-top:5px}.pro-report-id small{display:block;font-size:9px;color:#777;margin-top:3px}.pro-client-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:14px 0}.pro-client-grid>div{border:1px solid #dfe2e7;border-radius:10px;padding:10px}.pro-client-grid small{display:block;font-size:8px;letter-spacing:.08em;color:#777;font-weight:700}.pro-client-grid strong{display:block;font-size:13px;margin-top:4px}.pro-client-grid span{display:block;font-size:9px;color:#666;margin-top:3px}.pro-section{margin:13px 0;break-inside:avoid}.pro-section h2{font-size:11px;letter-spacing:.04em;text-transform:uppercase;margin:0 0 7px;color:#34383e}.pro-section>p{font-size:10px!important;line-height:1.5!important;color:#30343a!important;margin:0!important}.multiline{white-space:pre-wrap}.pro-section-title{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #dfe2e7;padding-bottom:5px;margin-bottom:2px}.pro-section-title h2{margin:0}.pro-section-title span{display:grid;place-items:center;min-width:24px;height:22px;border-radius:999px;background:#f1f2f4;font-size:9px;font-weight:800}.pro-measure{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:start;padding:9px 0;border-bottom:1px solid #eceef1;break-inside:avoid}.pro-measure:last-child{border-bottom:0}.pro-measure strong{display:block;font-size:10px}.pro-measure small{display:block;font-size:8px;color:#737983;margin-top:2px}.pro-measure p{font-size:9px!important;line-height:1.42!important;margin:4px 0 0!important;color:#333!important}.pro-status{font-size:8px;font-weight:800;border:1px solid #cfd3d8;border-radius:999px;padding:4px 7px;white-space:nowrap}.pro-status.ok{border-color:#68a67e;color:#28613d}.pro-status.bad{border-color:#d98b8b;color:#8a2c2c}.pro-status.warn{border-color:#d4ac52;color:#745811}.pro-status.info{color:#555}.pro-conclusion{background:#f8f7ef;border-left:4px solid #e5c74b;padding:10px;border-radius:8px}.pro-photo-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:7px}.pro-photo-grid figure{margin:0;border:1px solid #dfe2e7;border-radius:8px;overflow:hidden;break-inside:avoid}.pro-photo-grid img{display:block;width:100%;aspect-ratio:4/3;object-fit:cover}.pro-photo-grid figcaption{padding:5px;font-size:7.5px;line-height:1.3;color:#555}.pro-signatures{display:grid;grid-template-columns:1fr 1fr;gap:24px;margin-top:18px;padding-top:12px;border-top:1px solid #dfe2e7;break-inside:avoid}.pro-signatures>div{min-height:72px}.pro-signatures small{display:block;font-size:8px;color:#777}.pro-signatures img{display:block;max-width:150px;max-height:55px;object-fit:contain;margin-top:4px}.pro-signatures strong{display:block;font-size:9px;margin-top:3px}.pro-footer{border-top:1px solid #dfe2e7;margin-top:15px;padding-top:7px;color:#777;font-size:7.5px;line-height:1.4}.pro-muted{font-size:9px!important;color:#777!important}.pill.info{color:#80a9ff}
@media(min-width:650px){.report-photo-choices{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:520px){.report-brand-edit{grid-template-columns:1fr 90px}.pro-report{padding:10mm 8mm}.pro-report-header{grid-template-columns:1fr}.pro-report-id{text-align:left}.pro-client-grid{grid-template-columns:1fr}.pro-photo-grid{grid-template-columns:repeat(2,1fr)}}
@page{size:A4;margin:8mm}
@media print{
  html,body{background:#fff!important}.app{padding:0!important;margin:0!important}.report-paper{max-width:none!important;margin:0!important;border-radius:0!important;box-shadow:none!important}.pro-report{min-height:0!important;padding:0!important}.pro-report-header{break-inside:avoid}.pro-section,.pro-measure,.pro-photo-grid figure,.pro-signatures{break-inside:avoid;page-break-inside:avoid}.pro-photo-grid{grid-template-columns:repeat(3,1fr)!important}.pro-report *{-webkit-print-color-adjust:exact;print-color-adjust:exact}
}


/* V1.5 — finition application */
.logo img{width:100%;height:100%;object-fit:cover;border-radius:10px;display:block}
.splash{position:fixed;inset:0;z-index:9999;background:#080a0d;display:grid;place-items:center;transition:opacity .35s ease,visibility .35s ease}.splash.hide{opacity:0;visibility:hidden}.splash-inner{text-align:center;color:#fff;display:grid;justify-items:center;gap:10px}.splash-inner img{width:min(62vw,280px);height:auto;border-radius:28px;box-shadow:0 24px 70px #000}.splash-inner strong{font-size:30px;letter-spacing:.5px}.splash-inner span{color:#d7a93b;font-weight:700}
.update-banner{position:fixed;z-index:9900;top:max(8px,env(safe-area-inset-top));left:50%;transform:translateX(-50%);width:min(92vw,520px);background:#171a20;border:1px solid #d7a93b;color:#fff;padding:10px 12px;border-radius:14px;box-shadow:0 12px 35px #0008;display:flex;align-items:center;justify-content:space-between;gap:12px}.update-banner button{border:0;border-radius:9px;background:#d7a93b;color:#111;padding:8px 12px;font-weight:800}.update-banner[hidden]{display:none}
.dashboard-card{overflow:hidden}.dashboard-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:12px}.dashboard-grid>div{background:var(--panel-2,#15181e);border:1px solid var(--border,#2b3039);border-radius:13px;padding:12px;text-align:center}.dashboard-grid small{display:block;color:var(--muted,#9aa0aa);font-size:12px}.dashboard-grid strong{display:block;font-size:25px;margin-top:4px}.job-summary-grid.four{grid-template-columns:repeat(4,1fr)}
.btn.danger{background:#8e1d27;color:#fff;border-color:#ad2a36}.danger-btn,.btn.danger{box-shadow:none}.job-manage{margin-top:14px}.pill.muted{background:#3c414a;color:#d7dbe1}
#applyUpdate:disabled{opacity:.45;cursor:not-allowed}
@media(max-width:520px){.dashboard-grid{grid-template-columns:repeat(3,1fr)}.job-summary-grid.four{grid-template-columns:repeat(2,1fr)}}


/* V1.6 — localisation défaut PV par tensions DC */
.card-title-row{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.card-title-row h3{margin:0 0 4px}.check-line{display:flex;gap:10px;align-items:flex-start;padding:12px;border:1px solid var(--line);border-radius:13px;background:var(--panel2);margin:10px 0;cursor:pointer}.check-line input{margin-top:3px;accent-color:var(--accent);transform:scale(1.1)}.check-line span{display:block}.check-line strong{display:block;font-size:12px}.check-line small{display:block;color:var(--muted);font-size:10px;margin-top:3px;line-height:1.4}.pv-string{display:flex;align-items:center;gap:5px;overflow-x:auto;padding:13px 8px;margin:10px 0;border:1px solid var(--line);border-radius:13px;background:var(--panel2)}.pv-module{display:grid;place-items:center;flex:0 0 42px;height:32px;border:1px solid var(--line);border-radius:7px;font-size:10px;font-weight:800;background:var(--panel)}.pv-module.near{border-color:var(--accent);box-shadow:0 0 0 1px color-mix(in srgb,var(--accent) 30%,transparent)}.pv-fault-marker{flex:0 0 auto;font-size:20px;filter:drop-shadow(0 0 5px rgba(245,203,65,.35))}.pv-pole{flex:0 0 auto;font-size:10px;font-weight:900;color:var(--muted);padding:0 2px}


/* V1.8 — résultat PV orienté recherche terrain */
.pv-result-focus{margin:12px 0;padding:16px;border-radius:18px;border:2px solid var(--line);background:var(--panel);box-shadow:var(--shadow)}
.pv-result-focus.warn{border-color:color-mix(in srgb,var(--warn) 72%,var(--line));background:color-mix(in srgb,var(--warn) 8%,var(--panel))}
.pv-result-focus.bad{border-color:color-mix(in srgb,var(--bad) 66%,var(--line));background:color-mix(in srgb,var(--bad) 7%,var(--panel))}
.pv-result-kicker{font-size:11px;font-weight:900;letter-spacing:.08em;color:var(--accent);margin-bottom:7px}
.pv-result-focus h3{font-size:20px;line-height:1.18;margin:0 0 8px}
.pv-result-focus p{font-size:13px;line-height:1.5;margin:0;color:var(--text)}
.pv-result-meta{display:flex;flex-wrap:wrap;gap:7px;margin-top:11px}.pv-result-meta span{font-size:11px;font-weight:800;padding:6px 9px;border-radius:999px;background:var(--panel2);border:1px solid var(--line)}
.pv-calc-details{margin:10px 0;border:1px solid var(--line);border-radius:14px;background:var(--panel)}
.pv-calc-details summary{cursor:pointer;padding:12px 14px;font-size:12px;font-weight:800;color:var(--muted)}
.pv-calc-body{padding:0 14px 12px}.pv-calc-body p{font-size:12px!important;line-height:1.45!important;margin:7px 0!important;color:var(--muted)!important}

/* V1.9 — comparateur strings / MPPT + qualité chantier */
.pv-string-table{display:grid;gap:10px;margin:12px 0}.pv-string-row{padding:12px;border:1px solid var(--line);border-radius:15px;background:var(--panel2)}.pv-string-row[hidden]{display:none}.pv-string-row-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:9px}.pv-string-row-head strong{font-size:14px}.string-check{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:4px 10px;padding:11px 12px;margin:8px 0;border:1px solid var(--line);border-radius:13px;background:var(--panel2)}.string-check strong{font-size:12px}.string-check span{font-size:12px;font-weight:900}.string-check small{grid-column:1/-1;color:var(--muted);font-size:10px;line-height:1.45}.string-check.ok{border-color:color-mix(in srgb,var(--ok) 45%,var(--line))}.string-check.warn{border-color:color-mix(in srgb,var(--warn) 55%,var(--line))}.string-check.bad{border-color:color-mix(in srgb,var(--bad) 55%,var(--line))}.finish-card{border-color:color-mix(in srgb,var(--accent) 35%,var(--line))}.finish-auto{display:grid;gap:7px;margin:10px 0}.finish-auto>div{display:grid;grid-template-columns:28px 1fr;gap:8px;align-items:center;padding:9px 10px;border:1px solid var(--line);border-radius:12px;background:var(--panel2)}.finish-auto span{font-size:18px}.finish-auto p{margin:0!important}.finish-auto strong{display:block;font-size:11px}.finish-auto small{display:block;color:var(--muted);font-size:9px;margin-top:2px}.inline-input{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:7px}.timeline-item{display:grid;grid-template-columns:48px minmax(0,1fr) auto;gap:8px;align-items:start;padding:10px 0;border-bottom:1px solid var(--line)}.timeline-item:last-child{border-bottom:0}.timeline-item time{font-size:10px;color:var(--accent);font-weight:900}.timeline-item strong{font-size:11px}.timeline-item p{font-size:10px!important;color:var(--muted)!important;margin:3px 0 0!important;line-height:1.35}.timeline-item .pill{font-size:8px}.finish-card .check-line{margin:7px 0}
@media(max-width:480px){.string-check{grid-template-columns:1fr}.string-check span{justify-self:start}.timeline-item{grid-template-columns:42px minmax(0,1fr)}.timeline-item .pill{grid-column:2;justify-self:start}.inline-input{grid-template-columns:1fr}.inline-input .mini-btn{width:100%}}

/* V1.10 — diagnostic batteries : lithium/LiFePO4/plomb/AGM/GEL */

/* V2.0 — dossiers équipements / traçabilité */
.device-reg-box{margin-top:16px;padding:14px;border:1px dashed var(--line);border-radius:16px;background:color-mix(in srgb,var(--card) 90%,var(--accent) 10%)}
.device-reg-box h4{margin:0 0 10px}.equipment-link{display:flex;gap:10px;align-items:center}.equipment-link strong{flex:1}
@media(max-width:520px){.device-reg-box .field-grid{grid-template-columns:1fr}.section-title .mini-actions{gap:6px}}


/* V2.1 — suivi intelligent de maintenance */
.maintenance-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:10px 0}.maintenance-summary>div{padding:11px;border:1px solid var(--line);border-radius:13px;background:var(--panel2);text-align:center}.maintenance-summary small{display:block;color:var(--muted);font-size:10px}.maintenance-summary strong{display:block;font-size:19px;margin-top:3px}.trend-list{display:grid;gap:10px}.trend-card{padding:13px;border:1px solid var(--line);border-radius:15px;background:var(--panel2)}.trend-card.declining{border-color:color-mix(in srgb,var(--warn) 55%,var(--line))}.trend-card.improving{border-color:color-mix(in srgb,var(--ok) 48%,var(--line))}.trend-head{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}.trend-head strong{font-size:13px}.trend-head small{display:block;color:var(--muted);font-size:9px;margin-top:3px}.trend-values{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;margin-top:9px}.trend-values div{padding:8px;border-radius:10px;background:var(--panel);border:1px solid var(--line)}.trend-values small{display:block;color:var(--muted);font-size:8px}.trend-values b{display:block;font-size:12px;margin-top:2px}.trend-spark{width:100%;height:52px;margin-top:8px;display:block}.trend-note{font-size:10px!important;color:var(--muted)!important;margin:8px 0 0!important;line-height:1.4!important}.due-pill{display:inline-flex;align-items:center;gap:5px;font-size:10px;font-weight:800;padding:5px 8px;border-radius:999px;border:1px solid var(--line)}.due-pill.overdue{color:var(--bad);border-color:color-mix(in srgb,var(--bad) 45%,var(--line))}.due-pill.soon{color:var(--warn);border-color:color-mix(in srgb,var(--warn) 45%,var(--line))}.due-pill.ok{color:var(--ok)}
@media(max-width:520px){.maintenance-summary{grid-template-columns:repeat(3,1fr)}.trend-values{grid-template-columns:1fr 1fr}.trend-values div:last-child{grid-column:1/-1}}

/* V2.2 — contrôle guidé + références équipement */
.protocol-head{border-color:color-mix(in srgb,var(--accent) 42%,var(--line))}.protocol-progress{margin:12px 0}.protocol-progress>div{height:10px;border-radius:999px;background:var(--panel2);border:1px solid var(--line);overflow:hidden}.protocol-progress>div span{display:block;height:100%;background:var(--accent);border-radius:999px;transition:width .25s ease}.protocol-progress p{margin:6px 0 0!important;font-size:11px!important}.protocol-list{display:grid;gap:9px;margin-bottom:12px}.protocol-step{display:grid;grid-template-columns:38px minmax(0,1fr);gap:10px;padding:13px;border:1px solid var(--line);border-radius:16px;background:var(--panel);box-shadow:var(--shadow)}.protocol-step.done{border-color:color-mix(in srgb,var(--ok) 48%,var(--line));background:color-mix(in srgb,var(--ok) 5%,var(--panel))}.protocol-step.skipped{opacity:.65}.protocol-step-index{width:34px;height:34px;border-radius:11px;display:grid;place-items:center;background:var(--panel2);border:1px solid var(--line);font-weight:900}.protocol-step.done .protocol-step-index{background:var(--ok);color:#fff;border-color:var(--ok)}.protocol-step-title{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.protocol-step-title strong{font-size:13px}.protocol-step-main p{margin:4px 0 8px!important;font-size:11px!important;color:var(--muted)!important;line-height:1.4!important}.protocol-actions{display:flex;gap:7px;align-items:center;flex-wrap:wrap}.protocol-check{display:inline-flex;align-items:center;gap:5px;font-size:10px;color:var(--muted);padding:6px 8px;border:1px solid var(--line);border-radius:9px;background:var(--panel2)}.protocol-check input{accent-color:var(--accent)}.equipment-inline{display:grid;grid-template-columns:32px minmax(0,1fr) auto;gap:8px;align-items:center;padding:10px;border:1px solid var(--line);border-radius:13px;background:var(--panel2);margin:10px 0}.equipment-inline span{font-size:20px}.equipment-inline strong{display:block;font-size:11px}.equipment-inline small{display:block;color:var(--muted);font-size:9px;margin-top:2px}.reference-box{display:flex;justify-content:space-between;gap:10px;align-items:center;margin-top:9px;padding:9px;border:1px dashed color-mix(in srgb,var(--accent) 55%,var(--line));border-radius:11px;background:color-mix(in srgb,var(--accent) 6%,var(--panel))}.reference-box small,.reference-box span{display:block;color:var(--muted);font-size:8px}.reference-box strong{display:block;font-size:12px;margin:2px 0}.trend-card>.set-ref{margin-top:9px;width:100%}
@media(max-width:520px){.protocol-step{grid-template-columns:34px minmax(0,1fr)}.protocol-actions{align-items:stretch}.protocol-actions .mini-btn{width:100%}.equipment-inline{grid-template-columns:28px minmax(0,1fr)}.equipment-inline .mini-btn{grid-column:1/-1;width:100%}.reference-box{align-items:flex-start;flex-direction:column}.reference-box .mini-btn{width:100%}}
