*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--primary-black: #1a1a1a;--primary-white: #ffffff;--background: #fafafa;--card-bg: #ffffff;--text-primary: #1a1a1a;--text-secondary: #666666;--text-light: #999999;--border-light: #f0f0f0;--border-medium: #e0e0e0;--status-ok-bg: #e8f5e9;--status-ok-text: #2e7d32;--status-warning-bg: #fff8e1;--status-warning-text: #f57c00;--status-danger-bg: #ffebee;--status-danger-text: #c62828;--role-superadmin: #ffd700;--role-admin: #3498db;--role-user: #95a5a6;--text-xs: .7rem;--text-sm: .85rem;--text-base: .95rem;--text-lg: 1.25rem;--text-xl: 1.5rem;--spacing-xs: 8px;--spacing-sm: 12px;--spacing-md: 16px;--spacing-lg: 20px;--spacing-xl: 24px;--radius-sm: 8px;--radius-md: 12px;--radius-lg: 16px;--radius-xl: 20px;--shadow-sm: 0 2px 8px rgba(0, 0, 0, .04);--shadow-md: 0 4px 16px rgba(0, 0, 0, .06);--shadow-lg: 0 8px 24px rgba(0, 0, 0, .08);--shadow-card: 0 2px 8px rgba(0, 0, 0, .08);--transition-fast: .2s ease;--transition-normal: .3s cubic-bezier(.4, 0, .2, 1);--transition-slow: .5s ease-out;--tap-scale: .98;--font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", "Inter", system-ui, sans-serif;--font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-ink: var(--primary-black);--color-ink-soft: var(--text-secondary);--color-paper: var(--primary-white);--color-paper-soft: var(--card-bg);--color-accent: #f57c00;--color-accent-dark: #c65a00;--color-moss: #2e7d32;--color-alert: #c62828;--shadow-soft: var(--shadow-md);--gap-xl: 28px;--gap-lg: 20px;--gap-md: 14px;--gap-sm: 10px}html,body{width:100%;height:100%;overflow-x:hidden;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overscroll-behavior:none}body{font-family:var(--font-sans);font-size:var(--text-base);color:var(--text-primary);background:var(--background);line-height:1.6;letter-spacing:-.01em;-webkit-tap-highlight-color:transparent;touch-action:manipulation;overflow:hidden}#root{height:100%;min-height:100vh;overscroll-behavior:none;overflow:hidden}h1,h2,h3,h4,h5,h6{font-weight:600;line-height:1.3;margin-bottom:var(--spacing-sm)}h1{font-size:var(--text-xl)}h2{font-size:var(--text-lg)}h3{font-size:var(--text-base)}p{margin-bottom:var(--spacing-sm)}a{color:var(--primary-black);text-decoration:none;transition:opacity var(--transition-fast)}a:active{opacity:.7}button{font-family:inherit;font-size:var(--text-base);border:none;cursor:pointer;transition:transform var(--transition-fast),opacity var(--transition-fast);-webkit-tap-highlight-color:transparent}button:active{transform:scale(var(--tap-scale))}button:disabled{opacity:.5;cursor:not-allowed}input,textarea,select{font-family:inherit;font-size:var(--text-base);padding:var(--spacing-md);border:2px solid var(--border-light);border-radius:var(--radius-md);background:var(--card-bg);color:var(--text-primary);width:100%;transition:border-color var(--transition-fast)}input:focus,textarea:focus,select:focus{outline:none;border-color:var(--primary-black)}input::placeholder,textarea::placeholder{color:var(--text-light)}label{display:block;font-size:var(--text-sm);font-weight:600;margin-bottom:var(--spacing-xs);color:var(--text-primary)}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:var(--background)}::-webkit-scrollbar-thumb{background:var(--border-medium);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--text-secondary)}img{max-width:100%;height:auto;display:block}.no-select{-webkit-user-select:none;user-select:none}.app-shell{display:flex;min-height:100vh;height:100vh;padding:clamp(16px,2.5vw,28px);flex-direction:column;overflow:hidden}@supports (height: 100svh){.app-shell{min-height:100svh;height:100svh}}@supports (height: 100dvh){.app-shell{min-height:100dvh;height:100dvh}}.simple-shell{gap:28px}.simple-top{display:flex;align-items:center;justify-content:space-between;gap:14px;width:100%}.simple-user{display:grid;gap:6px;font-size:.95rem}.link-button{background:none;border:none;color:var(--color-ink-soft);padding:0;text-align:left;cursor:pointer}.avatar{height:52px;width:52px;border-radius:16px;background:#111;color:#fff;display:grid;place-items:center;font-weight:700;border:none;cursor:pointer}.simple-center{display:grid;place-items:center;gap:10px;text-align:center;position:relative;flex:1;min-height:0}.simple-center>*{position:relative;z-index:1}.home-watermark{position:absolute;width:80%;max-width:420px;opacity:.5;object-fit:contain;z-index:0;pointer-events:none}.home-actions{position:fixed;left:0;right:0;bottom:0;padding:0 20px calc(20px + env(safe-area-inset-bottom));display:flex;justify-content:center;z-index:60;pointer-events:none}.qr-fab{pointer-events:auto;height:72px;width:72px;border-radius:999px;border:1px solid rgba(15,42,47,.2);background:#fff;display:grid;place-items:center;box-shadow:0 10px 24px #0f2a2f29;cursor:pointer}.qr-fab img{width:36px;height:36px}.qr-fab:disabled{opacity:.5;cursor:not-allowed}.manual-scan{display:grid;gap:8px;width:min(320px,100%)}.desktop-only{display:none}@media(min-width:768px){.desktop-only{display:grid}}.manual-scan input{border-radius:12px;border:1px solid rgba(15,42,47,.2);padding:10px 12px}.qr-button{height:92px;width:92px;border-radius:26px;border:1px solid rgba(15,42,47,.2);background:#fff;font-size:1.25rem;font-weight:700;cursor:pointer;box-shadow:0 10px 24px #0f2a2f1f}.qr-button:disabled{opacity:.5;cursor:not-allowed}.simple-video{display:grid;gap:10px;place-items:center}.simple-video.active{position:fixed;inset:0;z-index:70;display:grid;place-items:center}.simple-video.inactive{display:none}.simple-details{max-width:640px}.detail-header{display:flex;justify-content:flex-start}.back-button{border:none;background:none;color:var(--color-ink);font-weight:600;cursor:pointer;padding:0}.detail-page{min-height:100vh;height:100vh;overflow:hidden}.detail-top{display:flex;align-items:center;justify-content:space-between;gap:12px}.detail-left{display:inline-flex;align-items:center;gap:10px}.detail-center{flex:1}.brand-logo{height:42px;display:grid;place-items:center;font-size:.75rem;color:var(--color-ink-soft);margin:0}.brand-logo img{max-height:60px;max-width:240px;object-fit:contain}.location-warning{background:#f59e0b;color:#3b2a00;padding:10px 14px;border-radius:12px;margin:8px 0 6px;font-weight:600;text-align:center}.detail-hero{display:grid;place-items:center;gap:8px;text-align:center;margin-top:4px;margin-bottom:2px}.detail-hero h2{margin:0}.equipment-icon-lg{height:96px;width:96px;border-radius:0;background:transparent;color:#111;display:grid;place-items:center;font-weight:700;object-fit:cover}.detail-tabs{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));border-bottom:1px solid rgba(15,42,47,.1);margin-top:4px}.tab{padding:12px 6px;border:none;background:none;cursor:pointer;font-weight:600;color:var(--color-ink-soft);border-bottom:2px solid transparent}.tab.active{color:var(--color-ink);border-bottom:2px solid #111}.detail-panel{padding-top:16px;padding-bottom:72px;overflow-y:auto;-webkit-overflow-scrolling:touch}.detail-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px}.detail-card{padding:12px;border-radius:12px;border:1px solid rgba(15,42,47,.08);background:#fff;display:grid;gap:6px;text-transform:none}.detail-card span{font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;color:var(--color-ink-soft)}.photo-card{width:100%;height:160px;object-fit:cover;border-radius:12px;border:1px solid rgba(15,42,47,.08)}.photo-card-button{border:none;background:none;padding:0;cursor:pointer}.detail-footer{margin-top:auto;display:flex;justify-content:center;position:fixed;left:0;right:0;bottom:0;z-index:20;background:#fff;padding:12px 16px 20px;box-shadow:0 -10px 20px #0000000f}.control-sheet-backdrop{align-items:end}.control-sheet{background:#fff;border-radius:18px 18px 0 0;padding:12px 16px 20px;width:100%;max-height:calc(100vh - 140px);overflow-y:auto;box-shadow:0 -16px 30px #00000029}.detail-page .detail-footer{margin-top:auto}.carnet-list{display:grid;gap:12px}.carnet-card{padding:12px;border-radius:12px;border:1px solid rgba(15,42,47,.08);background:#fff;display:grid;gap:6px;text-align:left;width:100%;cursor:pointer;font:inherit;transition:transform .2s ease,box-shadow .2s ease}.carnet-card:hover{transform:translateY(-1px);box-shadow:0 8px 16px #0f2a2f1f}.avatar-round{border-radius:999px;height:44px;width:44px}.sheet-backdrop{position:fixed;inset:0;background:#00000040;display:grid;align-items:end;z-index:80}.sheet{background:#fff;border-radius:16px 16px 0 0;padding:16px;display:grid;gap:14px;box-shadow:0 -16px 30px #0000001f}.intervention-sheet{max-height:min(80vh,640px);overflow-y:auto}.intervention-header{display:flex;align-items:center;justify-content:space-between;gap:12px}.intervention-meta{display:flex;flex-wrap:wrap;gap:8px;font-size:.85rem;color:var(--color-ink-soft)}.intervention-meta span+span:before{content:"•";margin:0 6px 0 2px}.intervention-title{font-weight:700;font-size:1.1rem}.intervention-section{display:grid;gap:10px}.intervention-section-title{font-size:.75rem;letter-spacing:.1em;text-transform:uppercase;color:var(--color-ink-soft)}.intervention-task-list{display:grid;gap:6px}.intervention-task{padding:8px 10px;border-radius:10px;background:#f5f6f8;font-size:.9rem;display:flex;align-items:center;justify-content:space-between;gap:8px}.task-info-button{height:22px;width:22px;border-radius:999px;border:1px solid rgba(15,42,47,.2);background:#fff;color:var(--color-ink);font-size:.75rem;font-weight:700;line-height:1;display:grid;place-items:center;cursor:pointer}.intervention-note{padding:10px 12px;border-radius:12px;border:1px solid rgba(15,42,47,.12);background:#fff;font-size:.92rem}.intervention-photos{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.intervention-photo{border:none;padding:0;background:none;cursor:pointer;width:100%;aspect-ratio:1 / 1;border-radius:12px;overflow:hidden;border:1px solid rgba(15,42,47,.1);box-shadow:0 6px 12px #0f2a2f14}.intervention-photo img{width:100%;height:100%;object-fit:cover;display:block}.photo-modal{position:fixed;inset:0;background:#0a0c0ea6;display:grid;place-items:center;z-index:95;padding:20px}.photo-modal-card{width:min(720px,92vw);max-height:90vh;background:#fff;border-radius:18px;padding:16px;display:grid;gap:12px;box-shadow:0 20px 50px #0f2a2f38}.photo-modal-card img{width:100%;max-height:70vh;object-fit:contain}.task-info-modal{position:fixed;inset:0;background:#0a0c0e73;display:grid;place-items:center;z-index:96;padding:20px}.task-info-card{width:min(420px,90vw);background:#fff;border-radius:16px;padding:16px;display:grid;gap:10px;box-shadow:0 18px 40px #0f2a2f33}.task-info-card p{margin:0;color:var(--color-ink-soft)}.sheet-handle{width:44px;height:4px;border-radius:999px;background:#0003;margin:0 auto}.sheet-info{display:grid;gap:4px}.tasks-line{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.equipment-header{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:14px;padding:14px;border-radius:18px;border:1px solid rgba(15,42,47,.1);margin-bottom:16px}.equipment-icon{height:56px;width:56px;border-radius:16px;background:#111;color:#fff;display:grid;place-items:center;font-weight:700}.equipment-icon-img{height:56px;width:56px;border-radius:16px;object-fit:cover;border:1px solid rgba(15,42,47,.1)}.equipment-title{display:grid;gap:4px}.equipment-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px}.mini-card{padding:12px;border-radius:14px;border:1px solid rgba(15,42,47,.08);background:#fff;display:grid;gap:6px}.mini-card span{color:var(--color-ink-soft);font-size:.9rem}.equipment-gallery{margin-top:18px}.equipment-gallery h4{margin:0 0 10px}.gallery-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:10px}.gallery-grid img{width:100%;height:120px;object-fit:cover;border-radius:12px;border:1px solid rgba(15,42,47,.08)}.modal{position:fixed;inset:0;background:#fff;display:grid;grid-template-rows:auto 1fr;padding:20px;z-index:50}.modal.control-modal{display:flex;flex-direction:column}.modal-header{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:12px;flex-shrink:0}.modal-title{font-size:1.5rem;font-weight:700;margin:0}.modal-content{display:grid;gap:18px;overflow-y:auto;padding-bottom:20px}.control-modal-body{flex:1;display:flex;flex-direction:column;overflow:hidden;padding-top:16px}.checklist-section{flex:1;overflow-y:auto;padding-top:8px;padding-bottom:12px}.tasks-header{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:10px;margin:10px 0 12px}.tasks-empty{display:grid;place-items:center;gap:12px;padding:18px 12px;text-align:center}.tasks-empty-icon{width:48px;height:48px;border-radius:14px;background:#0f2a2f14;color:var(--color-ink);display:grid;place-items:center}.tasks-empty-icon svg{width:26px;height:26px}.tasks-empty-text{font-weight:600;color:var(--color-ink-soft)}.checklist{display:grid;gap:12px}.check-item{display:grid;grid-template-columns:auto 1fr;gap:12px;align-items:center}.task-checkbox{width:32px;height:32px;appearance:none;border-radius:8px;border:2px solid #d9dee4;background:#fff;display:grid;place-items:center;cursor:pointer;flex-shrink:0}.task-checkbox:checked{background:#22c55e;border-color:#22c55e}.task-checkbox:checked:after{content:"✓";color:#fff;font-size:16px;font-weight:700}.task-button{background:#ffe500;border:none;border-radius:16px;padding:14px 24px;font-size:1rem;font-weight:600;color:#1a1a1a;cursor:pointer;text-align:center;width:100%;transition:transform .15s ease,box-shadow .15s ease;display:inline-flex;align-items:center;justify-content:center;gap:8px}.task-button:active{transform:scale(.98)}.task-button.checked{background:#22c55e;color:#fff}.task-button.overdue{background:#ef4444;color:#fff;box-shadow:0 6px 16px #ef444440}.task-warning-icon{display:inline-flex;width:18px;height:18px;flex-shrink:0}.task-warning-icon svg{width:100%;height:100%}.control-footer{flex-shrink:0;display:flex;flex-direction:column;gap:12px;padding-top:12px;border-top:1px solid rgba(15,42,47,.08)}.photo-block{display:grid;gap:10px;padding:12px;border-radius:12px;border:1px solid rgba(15,42,47,.08)}.photo-row{display:flex;align-items:center;gap:10px}.camera-button{width:52px;height:52px;border-radius:12px;border:none;background:transparent;display:grid;place-items:center;cursor:pointer;flex-shrink:0}.camera-button input{display:none}.camera-button img{width:40px;height:40px;object-fit:contain}.camera-button.disabled{opacity:.6;pointer-events:none}.equipment-photo-actions{grid-column:1 / -1;display:flex;align-items:center;gap:12px}.photo-dots{display:flex;gap:8px;flex:1}.photo-dot{width:44px;height:44px;border-radius:999px;border:none;background:#d9d9d9;overflow:hidden;display:grid;place-items:center}.photo-dot img{width:100%;height:100%;object-fit:cover}.pencil-button{display:none}.remarque-button{display:inline-flex;align-items:center;gap:8px;background:#1a1a1a;color:#fff;border:none;border-radius:16px;padding:12px 20px;font-size:.95rem;font-weight:600;cursor:pointer;margin-left:auto;flex-shrink:0}.remarque-button svg{width:18px;height:18px}.progress{display:grid;gap:8px}.progress-row{display:flex;align-items:center;gap:12px}.progress-row .progress-bar{flex:1;height:4px;border-radius:999px;background:#00000014;overflow:hidden}.progress-text{font-size:.85rem;color:#6b7280;white-space:nowrap}.progress-compact .progress-bar{height:4px;border-radius:999px;background:#00000014;overflow:hidden}.progress-fill{height:100%;background:#22c55e}.slide-check{display:grid;gap:8px;padding:12px;border-radius:12px;border:1px solid rgba(15,42,47,.08)}.slide-check input[type=range]{width:100%;accent-color:#0f2a2f}.confirm-row{display:grid;grid-template-columns:auto 1fr;align-items:center;gap:12px}.confirm-checkbox{width:32px;height:32px;appearance:none;border-radius:8px;border:2px solid #d9dee4;background:#fff;display:grid;place-items:center;cursor:pointer;flex-shrink:0}.confirm-checkbox:checked{background:#22c55e;border-color:#22c55e}.confirm-checkbox:checked:after{content:"✓";color:#fff;font-size:16px;font-weight:700}.switch{position:relative;display:inline-block;width:54px;height:30px}.switch input{opacity:0;width:0;height:0}.slider{position:absolute;inset:0;background:#b5b5b5;border-radius:999px;transition:.2s}.slider:before{content:"";position:absolute;height:24px;width:24px;left:3px;top:3px;background:#fff;border-radius:999px;transition:.2s}.switch input:checked+.slider{background:#2d6cdf}.switch input:checked+.slider:before{transform:translate(24px)}.button.rect{border-radius:12px;padding:12px 16px}.icon-button{height:40px;width:40px;border-radius:12px;border:1px solid rgba(15,42,47,.2);background:#fff;cursor:pointer;font-size:1rem}.note-modal{position:fixed;inset:0;background:#0f2a2f59;display:grid;place-items:center;z-index:90;padding:20px}.note-modal-card{width:min(420px,100%);background:#fff;border-radius:16px;padding:16px;display:grid;gap:12px;box-shadow:0 20px 40px #0f2a2f33}.note-modal-header{display:flex;align-items:center;justify-content:space-between;gap:10px}.speech-row{display:flex;align-items:center;gap:12px}.speech-button{display:inline-flex;align-items:center;gap:8px;border-radius:999px;border:1px solid rgba(15,42,47,.2);padding:8px 14px;background:#fff;cursor:pointer;font-weight:600}.speech-button svg{width:18px;height:18px}.speech-button.active{background:#fdecea;border-color:#f2b8b5;color:#c0392b}.speech-button:disabled{opacity:.6;cursor:not-allowed}.speech-status{font-size:var(--text-sm);color:var(--text-secondary)}.note-modal-card textarea{border-radius:12px;border:1px solid rgba(15,42,47,.2);padding:10px 12px;resize:vertical}.button.success{background:#e8f5e9;color:#1f7a4f;border:1px solid #c8e6c9}.panel{width:min(1100px,100%);margin:0 auto;background:var(--color-paper-soft);border-radius:var(--radius-lg);padding:clamp(18px,3vw,32px);box-shadow:var(--shadow-soft);position:relative;overflow:hidden}.panel:before{content:"";position:absolute;inset:0;background:linear-gradient(120deg,#ffb70314,#2a9d8f14);pointer-events:none}.panel-content{position:relative;z-index:1;display:grid;gap:var(--gap-xl)}.auth-shell{display:grid;place-items:center;padding:clamp(20px,5vw,48px)}.auth-card{width:min(420px,100%);background:#fff;border-radius:28px;padding:clamp(22px,5vw,36px);box-shadow:0 24px 50px #0f2a2f2e;display:grid;gap:var(--gap-md);text-align:center}.auth-logo{height:70px;width:70px;border-radius:20px;background:var(--color-ink);color:var(--color-paper);display:grid;place-items:center;font-weight:700;letter-spacing:.08em;margin:0 auto}.auth-title h2{margin:0;font-size:1.6rem}.auth-title p{margin:6px 0 0;color:var(--color-ink-soft)}.auth-links{text-align:right}.auth-links a{font-size:.82rem;color:var(--color-ink-soft);text-decoration:none}.auth-links a:hover{color:var(--color-ink)}.auth-footnote{border-top:1px solid rgba(15,42,47,.1);padding-top:14px;font-size:.82rem;color:var(--color-ink-soft)}.topbar{display:flex;align-items:center;justify-content:space-between;gap:var(--gap-md);flex-wrap:wrap}.brand{display:flex;align-items:center;gap:var(--gap-sm)}.brand-mark{width:44px;height:44px;border-radius:12px;background:var(--color-ink);display:grid;place-items:center;color:var(--color-paper);font-weight:700}.status-pill{display:inline-flex;align-items:center;gap:8px;padding:6px 12px;border-radius:999px;background:#e8efe6;color:var(--color-ink-soft);font-size:.85rem}.status-pill.offline{background:#ffe3e1;color:#7a2329}.grid{display:grid;gap:var(--gap-lg)}.grid.two{grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}.card{background:#fff;border-radius:var(--radius-md);padding:18px;box-shadow:0 10px 24px #0f2a2f14;display:grid;gap:var(--gap-md)}.card h3{margin:0;font-size:1rem}.card p{margin:0;color:var(--color-ink-soft);font-size:.92rem}.actions{display:flex;flex-wrap:wrap;gap:var(--gap-sm)}.button{border:none;background:var(--color-ink);color:var(--color-paper);padding:10px 16px;border-radius:999px;cursor:pointer;font-weight:600;transition:transform .2s ease,box-shadow .2s ease}.button:hover{transform:translateY(-1px);box-shadow:0 8px 20px #0f2a2f2e}.button.secondary{background:transparent;color:var(--color-ink);border:1px solid rgba(15,42,47,.2)}.button.accent{background:var(--color-accent);color:#2b1a00}.field{display:grid;gap:6px}.field label{font-size:.85rem;font-weight:600;color:var(--color-ink-soft)}.field input,.field textarea{border-radius:12px;border:1px solid rgba(15,42,47,.15);padding:10px 12px;background:#fff}.helper{font-size:.82rem;color:var(--color-ink-soft)}.kpi{display:grid;gap:6px;font-family:var(--font-mono)}.kpi strong{font-size:1.6rem}.list{display:grid;gap:10px}.list-item{padding:12px;border-radius:12px;border:1px dashed rgba(15,42,47,.2);display:flex;align-items:center;justify-content:space-between;gap:var(--gap-sm)}.badge{font-size:.75rem;padding:4px 10px;border-radius:999px;background:#e3f2ef;color:#1b5a52}.note{background:#fff8e1;border-left:4px solid var(--color-accent);padding:10px 12px;border-radius:10px;font-size:.85rem}.video-frame{width:min(80vw,520px);aspect-ratio:1 / 1;border-radius:18px;border:8px solid #fff;box-shadow:0 18px 40px #0f2a2f3d;background:#0f2a2f;overflow:hidden;display:grid;place-items:center}.video{width:100%;height:100%;border-radius:0;background:#0f2a2f;object-fit:cover}.qr-fab img{width:34px;height:34px;object-fit:contain}@media(max-width:720px){.panel{padding:18px}.topbar{align-items:flex-start}}
