/* Outils photo et terrain : préfixe ph- */
.ph-app[hidden]{display:none!important}
.ph-bench{align-items:start}
.ph-drop{border:3px dashed var(--sol);background:#fff;padding:22px 18px;text-align:center;margin-bottom:20px;border-radius:4px;transition:background .15s,border-color .15s}
.ph-drop.ph-over{background:#eaf2d9;border-color:var(--mousse)}
.ph-drop:focus-within{outline:3px solid var(--ocre);outline-offset:3px}
.ph-drop p{margin:0 0 12px;color:var(--sol)}
.ph-drop .btn{cursor:pointer;font:inherit;font-weight:700}
.ph-vh{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.ph-source{margin:0 0 14px;font-size:.92rem;color:var(--sol);overflow-wrap:anywhere}
.ph-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:0 16px}
.ph-app .field input[type=range]{min-height:0;padding:0;border:0;background:transparent;accent-color:var(--feuille);height:32px}
.ph-app .field input[type=text],.ph-app .field input[type=number],.ph-app .field select{max-width:100%}
.ph-app .field input[type=range]:focus-visible{outline:3px solid var(--ocre);outline-offset:2px}
.ph-val{font-weight:700;color:var(--feuille)}
.ph-hint{font-size:.86rem;color:var(--sol);margin:4px 0 0}
.ph-msg{margin:0 0 14px;min-height:0}
.ph-msg:empty{display:none}
.ph-msg.note{margin-top:0}
.ph-preview{background:repeating-conic-gradient(#e9e0c9 0 25%,#fbf6ea 0 50%) 0 0/20px 20px;border:1px solid var(--trait);padding:8px;margin-bottom:16px;text-align:center}
.ph-preview canvas{max-width:100%;height:auto;display:block;margin:0 auto}
.ph-stats{margin:0 0 16px}
.ph-stats div{display:flex;justify-content:space-between;gap:12px;padding:8px 0;border-bottom:1px dotted var(--sol)}
.ph-stats dt{color:var(--sol)}
.ph-stats dd{margin:0;font-weight:700;text-align:right}
.ph-report{margin:0 0 16px;padding:0 0 0 20px}
.ph-report li{margin:0 0 6px}
.ph-list{margin:0 0 14px;padding:0 0 0 20px;font-size:.9rem;max-height:200px;overflow:auto;overflow-wrap:anywhere}
.ph-dl{display:inline-block;max-width:100%;overflow-wrap:anywhere;text-align:center}
.ph-noscript{margin-top:24px}
.ph-btn{cursor:pointer;font:inherit;font-weight:700}
.ph-btn:disabled{opacity:.5;cursor:not-allowed}
.ph-btn:focus-visible,.ph-drop .btn:focus-visible{outline:3px solid var(--ocre);outline-offset:2px}
.ph-steps{padding-left:20px}
.ph-steps li{margin-bottom:6px}
@media (max-width:700px){.ph-drop{padding:16px 12px}.ph-bench .bench-form,.ph-bench .bench-out{padding:16px}}
.ph-preview:not(:has(canvas:not([hidden]))){display:none}
