:root{--navy-950:#0e1526;--navy-900:#0e1526;--navy-800:#182238;--navy-700:#182238;--navy-100:#94a3b8;--red-600:#dc2626;--red-700:#b91c1c;--red-50:#fee2e2;--bg:#f3f4f6;--surface:#fff;--surface-2:#f1f5f9;--border:#e5e7eb;--border-strong:#e5e7eb;--text:#1f2937;--text-muted:#6b7280;--text-faint:#475569;--success:#16a34a;--success-bg:#dcfce7;--warning:#d97706;--warning-bg:#fef3c7;--info:#2563eb;--info-bg:#dbeafe;--radius-sm:7px;--radius:12px;--radius-lg:12px;--radius-xl:14px;--shadow-sm:none;--shadow:none;--shadow-lg:none;--font:"Inter", "Segoe UI", system-ui, -apple-system, sans-serif;--font-display:"Sora", "Inter", system-ui, sans-serif}*{box-sizing:border-box}html,body,#root{height:100%}body{font-family:var(--font);background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;margin:0}h1,h2,h3{font-family:var(--font-display);color:var(--text);letter-spacing:-.02em;margin:0}p{margin:0}a{color:inherit}.field{flex-direction:column;gap:6px;margin-bottom:14px;display:flex}.field label{color:var(--text-muted);font-size:13px;font-weight:600}input,select{border:1.5px solid var(--border);width:100%;font-size:13.5px;font-family:var(--font);background:var(--surface);color:var(--text);border-radius:7px;padding:9px 10px;transition:border-color .15s}input::placeholder,textarea::placeholder{color:var(--text-faint);opacity:.45}input:focus,select:focus{border-color:var(--red-600);box-shadow:none;outline:none}button{font-family:var(--font);cursor:pointer}.btn{border:0;border-radius:8px;justify-content:center;align-items:center;gap:6px;width:100%;padding:10px 16px;font-size:13px;font-weight:700;transition:background .15s,opacity .15s;display:inline-flex}.btn-primary{background:var(--red-600);color:#fff}.btn-primary:hover{background:var(--red-700)}.btn-dark{background:var(--navy-900);color:#fff}.btn-dark:hover{background:var(--navy-800)}.btn-ghost{border:1.5px solid var(--border);color:var(--text);background:0 0}.btn-ghost:hover{background:var(--surface-2)}button:disabled{opacity:.55;cursor:default;box-shadow:none;transform:none}.card{background:var(--surface);border-radius:var(--radius-lg);border:1px solid var(--border);box-shadow:none;margin:0 0 16px;padding:18px}.card h2{margin-bottom:12px;font-size:14.5px;font-weight:700}.card-header{justify-content:space-between;align-items:center;margin-bottom:18px;display:flex}.card-header h2{margin:0}.msg{min-height:20px;font-size:13.5px}.error{color:var(--red-700);font-weight:600}.success-text{color:var(--success);font-weight:600}.badge{white-space:nowrap;border-radius:20px;padding:4px 10px;font-size:11px;font-weight:700;display:inline-block}.badge-neutral{background:var(--surface-2);color:var(--text-faint)}.badge-info{background:var(--info-bg);color:var(--info)}.badge-warning{background:var(--warning-bg);color:var(--warning)}.badge-success{background:var(--success-bg);color:var(--success)}.stat-grid{grid-template-columns:repeat(4,1fr);gap:14px;display:grid}.stat-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);flex-direction:column-reverse;padding:16px;display:flex}.stat-card .label{color:var(--text-muted);margin-top:3px;font-size:12.5px}.stat-card b{font-family:var(--font-display);font-size:22px;font-weight:800;line-height:1.1;display:block}.table-wrap{overflow-x:auto}table{border-collapse:collapse;width:100%;font-size:13px}th{text-align:left;text-transform:uppercase;letter-spacing:.4px;color:var(--text-muted);border-bottom:1px solid var(--border);padding:8px 10px;font-size:11px;font-weight:700}td{text-align:left;border-bottom:1px solid var(--border);vertical-align:middle;padding:10px}tbody tr:last-child td{border-bottom:0}.empty-state{text-align:center;color:var(--text-muted);padding:30px 10px;font-size:14px}.muted{color:var(--text-muted)}.small{font-size:12.5px}.mono{font-family:JetBrains Mono,SFMono-Regular,Consolas,monospace}.badge-btn{cursor:pointer;background:0 0;border:0;padding:0}.link-btn{color:var(--red-600);cursor:pointer;background:0 0;border:0;margin-bottom:14px;padding:0;font-size:13.5px;font-weight:700}.auth-shell{background:var(--bg);grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);min-height:100vh;display:grid;overflow:hidden}.auth-brand{color:#fff;background:linear-gradient(158deg,#17263f 0%,#0e1526 52%,#0a0f1c 100%);flex-direction:column;justify-content:space-between;gap:26px;padding:clamp(38px,4.6vw,64px);display:flex;position:relative;overflow:hidden}.auth-brand:before,.auth-brand:after{content:"";filter:blur(64px);pointer-events:none;z-index:0;border-radius:50%;position:absolute}.auth-brand:before{background:radial-gradient(circle,#dc262666,#0000 70%);width:440px;height:440px;animation:17s ease-in-out infinite alternate authOrb;top:-140px;right:-130px}.auth-brand:after{background:radial-gradient(circle,#385ca86b,#0000 72%);width:380px;height:380px;animation:23s ease-in-out infinite alternate-reverse authOrb;bottom:-150px;left:-110px}@keyframes authOrb{0%{transform:translate(0,0)scale(1)}to{transform:translate(34px,44px)scale(1.18)}}.auth-brand>*{z-index:1;position:relative}.auth-logo{font-family:var(--font-display);letter-spacing:-.01em;align-items:center;gap:11px;font-size:19px;font-weight:800;animation:.55s cubic-bezier(.22,1,.36,1) both authRise;display:inline-flex}.auth-logo .dot{background:var(--red-600);border-radius:3px;width:10px;height:10px}.auth-brand h1{color:#fff;letter-spacing:-.025em;max-width:13ch;font-size:clamp(29px,3.3vw,43px);line-height:1.12;animation:.6s cubic-bezier(.22,1,.36,1) 60ms both authRise}.auth-brand h1 .accent{background:linear-gradient(90deg,#ff6a5a,#ff9d7a);color:#0000;-webkit-background-clip:text;background-clip:text}.auth-brand p{color:var(--navy-100);max-width:40ch;margin-top:15px;font-size:14.5px;line-height:1.65;animation:.6s cubic-bezier(.22,1,.36,1) .12s both authRise}.auth-features{flex-direction:column;gap:11px;margin:22px 0 0;padding:0;list-style:none;display:flex}.auth-features li{color:#d7dfec;align-items:center;gap:12px;font-size:13px;animation:.5s cubic-bezier(.22,1,.36,1) both authRise;display:flex}.auth-features li:first-child{animation-delay:.18s}.auth-features li:nth-child(2){animation-delay:.26s}.auth-features li:nth-child(3){animation-delay:.34s}.auth-features .ico{color:#fff;width:34px;height:34px;font-family:var(--font-display);background:#ffffff12;border:1px solid #ffffff1c;border-radius:10px;flex-shrink:0;place-items:center;font-size:13px;font-weight:700;display:grid}.auth-foot{color:var(--navy-100);opacity:.55;font-size:11.5px;animation:.9s .4s both authFade}.auth-panel{background:radial-gradient(circle at 100% 0%, #dc26260d, transparent 42%), radial-gradient(circle at 0% 100%, #1017280a, transparent 40%), var(--bg);justify-content:center;align-items:center;min-width:0;padding:40px 24px;display:flex}.auth-card{background:var(--surface);border:1px solid var(--border);border-radius:20px;width:100%;min-width:0;max-width:428px;padding:34px 32px 26px;animation:.6s cubic-bezier(.22,1,.36,1) both authCardIn;position:relative;box-shadow:0 1px 2px #1017280a,0 14px 26px -10px #1017281f,0 34px 60px -24px #10172829}.auth-card:before{content:"";background:linear-gradient(90deg, var(--red-600), #f9866f);border-radius:0 0 3px 3px;height:3px;position:absolute;top:0;left:26px;right:26px}.auth-card-logo{justify-content:center;margin-bottom:16px;display:flex}.auth-card-logo .logo-mark{filter:drop-shadow(0 16px 28px #dc262652);transition:transform .3s cubic-bezier(.22,1,.36,1)}.auth-card-logo .logo-mark:hover{transform:translateY(-3px)rotate(-3deg)}.auth-card h2{text-align:center;margin-bottom:6px;font-size:22px}.auth-card .subtitle{color:var(--text-muted);text-align:center;margin-bottom:22px;font-size:13.5px}.auth-card .field{margin-bottom:14px}.auth-card .field label{font-size:12.5px;font-weight:600}.auth-card input{border-radius:10px;padding:12px 13px;font-size:14px;transition:border-color .18s,box-shadow .18s,background .18s}.auth-card input:focus{border-color:var(--red-600);box-shadow:0 0 0 4px #dc26261f}.auth-card input:disabled{background:var(--surface-2);color:var(--text-muted);cursor:not-allowed}.auth-card .btn{border-radius:10px;margin-top:2px;padding:12px 16px;font-size:13.5px}.auth-card .btn-primary{background:linear-gradient(180deg, #e43c3c, var(--red-600));transition:transform .15s,box-shadow .2s,filter .15s;box-shadow:0 8px 18px -5px #dc262673}.auth-card .btn-primary:hover:not(:disabled){filter:brightness(1.05);transform:translateY(-1px);box-shadow:0 12px 24px -6px #dc262685}.auth-card .btn-primary:active:not(:disabled){transform:translateY(0)}.auth-card-logo,.auth-card h2,.auth-card .subtitle,.auth-card .google-btn-wrap,.auth-card .auth-divider,.auth-card .auth-tabs,.auth-card form,.auth-card>.field,.auth-card .auth-links{animation:.5s cubic-bezier(.22,1,.36,1) both authRise}.auth-card h2{animation-delay:40ms}.auth-card .subtitle{animation-delay:80ms}.auth-card .google-btn-wrap{animation-delay:.12s}.auth-card .auth-divider{animation-delay:.16s}.auth-card .auth-tabs{animation-delay:.18s}.auth-card form,.auth-card>.field{animation-delay:.22s}.auth-card .auth-links{animation-delay:.3s}.auth-links{color:var(--text-muted);text-align:center;flex-direction:column;align-items:center;gap:10px;margin-top:20px;font-size:13px;display:flex}.auth-links a{color:var(--red-600);font-weight:700;text-decoration:none}.auth-links a:hover{text-decoration:underline}.auth-links .track-link{border:1.5px solid var(--border);color:var(--text);border-radius:999px;align-items:center;gap:7px;padding:10px 16px;font-weight:700;transition:border-color .16s,background .16s,transform .16s,color .16s;display:inline-flex}.auth-links .track-link:hover{border-color:var(--red-600);color:var(--red-600);background:#fff5f5;text-decoration:none;transform:translateY(-1px)}.auth-divider{color:var(--text-faint);text-transform:uppercase;letter-spacing:.06em;align-items:center;gap:12px;margin:18px 0;font-size:11.5px;display:flex}.auth-divider:before,.auth-divider:after{content:"";background:var(--border);flex:1;height:1px}input.code-input{text-align:center;letter-spacing:.55em;font-family:var(--font-display);padding:12px 13px 12px 20px;font-size:19px;font-weight:700}.auth-card .otp-reveal,.otp-reveal{animation:.34s cubic-bezier(.22,1,.36,1) both otpReveal}@keyframes otpReveal{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.spinner{border:2px solid #ffffff59;border-top-color:#fff;border-radius:50%;width:15px;height:15px;animation:.62s linear infinite spin;display:inline-block}.btn-ghost .spinner{border-color:#1f293740;border-top-color:var(--text)}@keyframes spin{to{transform:rotate(360deg)}}.google-btn-wrap{justify-content:center;max-width:100%;min-height:44px;display:flex;overflow:hidden}.google-btn-placeholder{border:1.5px solid var(--border);width:320px;max-width:100%;height:44px;color:var(--text-faint);border-radius:8px;justify-content:center;align-items:center;font-size:13px;display:flex}@keyframes authRise{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}@keyframes authFade{0%{opacity:0}to{opacity:1}}@keyframes authCardIn{0%{opacity:0;transform:translateY(20px)scale(.985)}to{opacity:1;transform:none}}@media (width<=900px){.auth-shell{min-height:100vh;display:block}.auth-brand{flex-direction:row;justify-content:flex-start;align-items:center;gap:12px;min-height:0;padding:16px 20px}.auth-brand:before,.auth-brand:after,.auth-brand>:not(.auth-logo){display:none}.auth-panel{align-items:flex-start;padding:26px 16px 44px}.auth-card{padding:30px 22px 24px;box-shadow:0 12px 34px -14px #10172833}}@media (prefers-reduced-motion:reduce){.auth-brand:before,.auth-brand:after,.auth-logo,.auth-brand h1,.auth-brand p,.auth-features li,.auth-foot,.auth-illustration,.auth-card,.auth-card-logo,.auth-card h2,.auth-card .subtitle,.auth-card .google-btn-wrap,.auth-card .auth-divider,.auth-card .auth-tabs,.auth-card form,.auth-card>.field,.auth-card .auth-links,.otp-reveal{animation:none}}.app-shell{min-height:100vh}.sidebar{background:var(--navy-950);color:#cbd5e1;z-index:20;border-right:1px solid #ffffff0f;flex-direction:column;gap:0;width:220px;padding:18px 12px;display:flex;position:fixed;top:0;bottom:0;left:0;overflow:hidden;box-shadow:8px 0 24px #0000001f}.sidebar-brand{font-family:var(--font-display);border-bottom:1px solid var(--navy-800);flex-shrink:0;align-items:center;gap:10px;margin-bottom:14px;padding:6px 8px 16px;font-size:17px;font-weight:800;display:flex}.sidebar-brand .dot{background:var(--red-600);border-radius:3px;width:10px;height:10px}.sidebar-nav{flex-direction:column;flex:1;gap:3px;padding-right:2px;display:flex;overflow-y:auto}.sidebar-nav a,.sidebar-nav .nav-item{color:#94a3b8;border-radius:8px;align-items:center;gap:10px;padding:9px 10px 9px 13px;font-size:13px;font-weight:500;text-decoration:none;transition:background .15s,color .15s;display:flex;position:relative}.sidebar-nav .nav-item svg{opacity:.85;flex-shrink:0;transition:opacity .15s}.sidebar-nav .nav-item.active{background:var(--navy-800);color:#fff;font-weight:700}.sidebar-nav .nav-item.active:before{content:"";background:var(--red-600);border-radius:2px;width:3px;position:absolute;top:6px;bottom:6px;left:0}.sidebar-nav .nav-item.active svg{opacity:1;color:var(--red-600)}.sidebar-nav .nav-item:hover:not(.active){color:#fff;background:#ffffff0d}.sidebar-foot{border-top:1px solid var(--navy-800);flex-shrink:0;margin-top:10px;padding-top:14px}.sidebar-user{align-items:center;gap:10px;margin-bottom:8px;padding:6px 8px;display:flex}.avatar{background:linear-gradient(155deg, var(--red-600), var(--red-700));width:34px;height:34px;font-family:var(--font-display);color:#fff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:13px;font-weight:800;display:flex;box-shadow:0 4px 10px -2px #dc26268c}.sidebar-user .who{min-width:0}.sidebar-user .who .email{color:#fff;white-space:nowrap;text-overflow:ellipsis;max-width:140px;font-size:12.5px;font-weight:600;overflow:hidden}.sidebar-user .who .role{color:var(--red-600);text-transform:uppercase;letter-spacing:.06em;font-size:10px;font-weight:800}.logout-btn{color:#f1a3a3;background:#ffffff0a;border:1px solid #ffffff12;border-radius:8px;align-items:center;gap:10px;width:100%;padding:10px 12px;font-size:13px;font-weight:600;transition:background .15s,border-color .15s,color .15s;display:flex}.logout-btn:hover{color:#fca5a5;background:#ef44441f;border-color:#ef44444d}.main{box-sizing:border-box;max-width:1600px;margin-left:220px;padding:24px 28px 60px}.topbar{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:20px;display:flex}.topbar .eyebrow{text-transform:uppercase;letter-spacing:.6px;color:var(--text-faint);margin-bottom:3px;font-size:11px;font-weight:700;display:block}.topbar h1{font-size:22px}@media (width<=900px){.sidebar{width:auto;height:auto;box-shadow:none;border-bottom:1px solid #ffffff0f;border-right:0;flex-direction:row;align-items:center;padding:14px 18px;position:static;overflow:auto visible}.sidebar-brand{border-bottom:0;margin-bottom:0;padding:0}.sidebar-nav{flex-direction:row;overflow-y:visible}.sidebar-foot{display:none}.main{margin-left:0;padding:24px 18px 40px}}@media (width<=650px){.stat-grid{grid-template-columns:1fr 1fr}}.track-shell{background:var(--bg);min-height:100vh;padding:60px 20px}.track-wrap{max-width:640px;margin:0 auto}.track-hero{text-align:center;margin-bottom:30px}.track-hero h1{margin-bottom:8px;font-size:30px}.track-hero p{color:var(--text-muted);font-size:14.5px}.search-row{align-items:flex-start;gap:10px;display:flex}.search-row input{margin:0}.search-row button{flex-shrink:0;width:auto;padding:12px 22px}.detail-row{border-bottom:1px solid var(--border);justify-content:space-between;padding:12px 0;font-size:14.5px;display:flex}.detail-row:last-child{border-bottom:0}.detail-row .k{color:var(--text-muted);font-weight:600}.detail-row .v{font-weight:700}.back-link{color:var(--text-muted);margin-top:18px;font-size:13.5px;font-weight:600;text-decoration:none;display:inline-block}.back-link:hover{color:var(--red-600)}.auth-illustration{flex:1;justify-content:center;align-items:center;min-height:0;padding:18px 0;display:flex}.globe-wrap{filter:drop-shadow(0 30px 50px #00000073);width:100%;max-width:560px}.move-along{offset-distance:0%;animation-name:moveOffset;animation-timing-function:linear;animation-iteration-count:infinite}@keyframes moveOffset{0%{offset-distance:0%}to{offset-distance:100%}}.globe-svg{width:100%;height:auto;overflow:visible}.globe-rim{fill:none;stroke:#ffffff24;stroke-width:1.5px}.globe-grid{fill:none;stroke:#dfe4ee29;stroke-width:1px}.route-path{fill:none;stroke-linecap:round}.route-air{stroke:#ffffff8c;stroke-width:1.6px;stroke-dasharray:5 6;animation:1.1s linear infinite dashFlowAir}.route-sea{stroke:#5eead480;stroke-width:1.6px;stroke-dasharray:3 7;animation:1.6s linear infinite dashFlowSea}@keyframes dashFlowAir{to{stroke-dashoffset:-22px}}@keyframes dashFlowSea{to{stroke-dashoffset:-20px}}.marker-dot{fill:#fff}.marker-label{fill:var(--navy-100);font-family:var(--font);letter-spacing:.04em;text-transform:uppercase;font-size:11px;font-weight:700}.ping-circle{fill:none;stroke:var(--red-600);stroke-width:2px;transform-box:fill-box;transform-origin:50%;animation:2.2s ease-out infinite pingPulse}.ping-2{animation-delay:1.1s}@keyframes pingPulse{0%{opacity:.8;transform:scale(.5)}to{opacity:0;transform:scale(3.2)}}.plane-icon path{filter:drop-shadow(0 0 4px #fff9)}.boat-icon path{filter:drop-shadow(0 0 4px #5eead480)}.star-dot{fill:#fff9;animation:3.4s ease-in-out infinite twinkle}@keyframes twinkle{0%,to{opacity:.15}50%{opacity:.85}}@media (prefers-reduced-motion:reduce){.route-air,.route-sea,.ping-circle,.star-dot,.move-along{animation:none}}.dashboard-grid{grid-template-columns:1.4fr 1fr;align-items:start;gap:20px;min-width:0;display:grid}.dashboard-grid>*,.stat-grid>*,.finance-grid>*{min-width:0}@media (width<=900px){.dashboard-grid{grid-template-columns:1fr}}.donut-row{flex-wrap:wrap;align-items:center;gap:24px;display:flex}.donut-chart{border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:110px;height:110px;display:flex;position:relative}.donut-chart:after{content:"";background:var(--surface);border-radius:50%;position:absolute;inset:20px}.donut-total{text-align:center;position:relative}.donut-total b{font-family:var(--font-display);color:var(--text);font-size:17px;display:block}.donut-total span{color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;font-size:11px}.donut-legend{flex-direction:column;flex:1;gap:10px;min-width:180px;display:flex}.donut-legend-item{align-items:center;gap:10px;font-size:13.5px;display:flex}.donut-legend-item .swatch{border-radius:3px;flex-shrink:0;width:10px;height:10px}.donut-legend-item .lbl{color:var(--text-muted);flex:1}.donut-legend-item b{color:var(--text)}.timeline{border-left:2px solid var(--border);flex-direction:column;gap:22px;margin-left:6px;padding-left:22px;display:flex}.timeline-item{position:relative}.timeline-item:before{content:"";background:var(--info);width:12px;height:12px;box-shadow:0 0 0 4px var(--info-bg);border-radius:50%;position:absolute;top:3px;left:-28px}.timeline-item:not(:first-child):before{border:2px solid var(--border);box-shadow:none;background:#fff}.timeline-item .t-statut{margin-bottom:2px;font-size:14.5px;font-weight:700}.timeline-item .t-meta{color:var(--text-muted);font-size:12.5px}.print-only{display:none}@media print{.sidebar,.topbar,.no-print{display:none!important}.app-shell{display:block}.main{max-width:none;padding:0}body{background:#fff}.card{box-shadow:none;border:1px solid #ddd}.print-only{display:block}.exp-card{break-inside:avoid;box-shadow:none;border:1px solid #ccc}}.row-actions{gap:2px;display:flex}.icon-btn{width:auto;height:auto;color:var(--text-muted);cursor:pointer;background:0 0;border:0;border-radius:6px;justify-content:center;align-items:center;padding:6px;transition:background .15s,color .15s;display:inline-flex}.icon-btn:hover{background:var(--surface-2);color:var(--text)}.icon-btn.danger:hover{background:var(--red-50);color:var(--red-600)}.search-inline{background:var(--surface);border:1px solid var(--border);color:var(--text-muted);border-radius:9px;align-items:center;gap:8px;max-width:340px;margin-bottom:14px;padding:9px 12px;display:flex}.search-inline input{background:0 0;border:0;flex:1;padding:0;font-size:13px}.search-inline input:focus{box-shadow:none}.pager{border-top:0;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;margin-top:12px;padding-top:0;display:flex}.pager-controls{gap:4px;display:flex}.pager-controls button{border:1px solid var(--border);background:var(--surface);min-width:26px;height:26px;color:var(--text-faint);cursor:pointer;border-radius:6px;font-size:12px;font-weight:600}.pager-controls button.active{background:var(--red-600);border-color:var(--red-600);color:#fff}.pager-controls button:disabled{opacity:.4;cursor:default}.status-dots{align-items:center;margin:4px 0 14px;display:flex}.status-dot-wrap{flex:1;align-items:center;display:flex}.status-dot-wrap:last-child{flex:0}.status-dot{border:2px solid var(--border);color:#fff;cursor:pointer;background:#fff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:15px;height:15px;padding:0;display:flex}.status-dot.done{background:var(--navy-900);border-color:var(--navy-900)}.status-dot.current{box-shadow:0 0 0 3px #0e152626}.status-dot:disabled{cursor:default}.status-line{background:var(--border);flex:1;height:2px;margin:0 2px}.status-line.done{background:var(--navy-900)}.photos-block{margin:6px 0 14px}.photos-grid{flex-wrap:wrap;gap:10px;display:flex}.photo-thumb{border:1px solid var(--border);border-radius:8px;width:64px;height:64px;position:relative;overflow:hidden}.photo-thumb img{object-fit:cover;width:100%;height:100%;display:block}.photo-remove{color:#fff;cursor:pointer;background:#0f172ab3;border:0;border-radius:50%;justify-content:center;align-items:center;width:16px;height:16px;padding:0;display:flex;position:absolute;top:2px;right:2px}.photo-add{border:1.5px dashed var(--border);width:64px;height:64px;color:var(--text-muted);cursor:pointer;text-align:center;background:0 0;border-radius:8px;flex-direction:column;justify-content:center;align-items:center;gap:2px;font-size:9.5px;font-weight:600;display:flex}.photo-add:hover{border-color:var(--red-600);color:var(--red-600)}.tabs{gap:8px;margin-bottom:14px;display:flex}.tabs button{border:1.5px solid var(--border);background:var(--surface);color:var(--text-muted);cursor:pointer;border-radius:8px;padding:8px 16px;font-size:12.5px;font-weight:700}.tabs button.active{background:var(--navy-900);border-color:var(--navy-900);color:#fff}.sub-panel{background:var(--surface-2);border-radius:var(--radius-sm);padding:16px}.row-card{border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface);cursor:pointer;text-align:left;justify-content:space-between;align-items:center;width:100%;margin-bottom:8px;padding:12px 14px;display:flex}.row-card:hover{background:var(--surface-2)}.row-right{align-items:center;gap:10px;display:flex}.settings-row{border-bottom:1px solid var(--border);align-items:center;gap:12px;padding:14px 4px;display:flex}.settings-row:last-child{border-bottom:0}.settings-icon{background:var(--surface-2);width:34px;height:34px;color:var(--text-faint);border-radius:9px;flex-shrink:0;justify-content:center;align-items:center;display:flex}.finance-grid{grid-template-columns:repeat(3,1fr);gap:14px;margin-top:12px;display:grid}.finance-grid>div{flex-direction:column;gap:4px;display:flex}.finance-grid strong{font-size:14px}.client-picker{margin-bottom:12px;position:relative}.client-picker-dropdown{z-index:20;background:var(--surface);border:1px solid var(--border);border-radius:9px;max-height:260px;padding:6px;position:absolute;top:calc(100% + 4px);left:0;right:0;overflow-y:auto;box-shadow:0 8px 24px #1017281f}.client-picker-option{text-align:left;cursor:pointer;background:0 0;border:0;border-radius:7px;flex-direction:column;gap:1px;width:100%;padding:8px 10px;display:flex}.client-picker-option:hover{background:var(--surface-2)}.client-picker-create{border:0;border-top:1px solid var(--border);width:100%;color:var(--red-600);cursor:pointer;background:0 0;border-radius:7px;align-items:center;gap:8px;margin-top:4px;padding:9px 10px;font-size:13px;font-weight:700;display:flex}.client-picker-create:hover{background:var(--red-50)}.client-picker-selected{border:1px solid var(--border);background:var(--surface-2);border-radius:9px;justify-content:space-between;align-items:center;margin-bottom:12px;padding:10px 12px;display:flex}@media (width<=900px){.finance-grid{grid-template-columns:1fr}}.route-visual{align-items:center;gap:14px;min-width:0;display:flex}.route-visual .city{white-space:nowrap;font-size:15px;font-weight:800}.route-visual .path{flex:0 120px;justify-content:center;align-items:center;min-width:40px;max-width:160px;height:16px;display:flex;position:relative}.route-visual .path:before{content:"";border-top:1.5px dashed var(--border-strong);height:0;position:absolute;top:50%;left:0;right:0}.route-visual .path svg{background:var(--surface);color:var(--red-600);padding:0 2px;position:relative}.route-card{border:1px solid var(--border);border-radius:var(--radius-lg);justify-content:space-between;align-items:center;gap:14px;margin-bottom:10px;padding:14px 16px;transition:border-color .15s,box-shadow .15s;display:flex}.route-card:hover{border-color:var(--border-strong);box-shadow:0 6px 18px #1017280f}.route-card .meta{color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;gap:22px;font-size:11px;display:flex}.route-card .meta>div{flex-direction:column;gap:3px;min-width:70px;display:flex}.route-card .meta b{color:var(--text);text-transform:none;letter-spacing:normal;font-size:13.5px;font-weight:700}.drawer-root{z-index:100;position:fixed;inset:0}.drawer-backdrop{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#0e152673;animation:.2s drawerFade;position:absolute;inset:0}@keyframes drawerFade{0%{opacity:0}to{opacity:1}}.drawer{background:var(--surface);flex-direction:column;width:min(468px,100vw);animation:.28s cubic-bezier(.16,1,.3,1) drawerSlide;display:flex;position:absolute;top:0;bottom:0;right:0;box-shadow:-24px 0 60px #10172838}@keyframes drawerSlide{0%{opacity:.6;transform:translate(100%)}to{opacity:1;transform:translate(0)}}.drawer-head{border-bottom:1px solid var(--border);justify-content:space-between;align-items:flex-start;gap:12px;padding:20px 22px;display:flex}.drawer-head-main{align-items:center;gap:12px;min-width:0;display:flex}.drawer-head-icon{background:linear-gradient(150deg, var(--navy-800), var(--navy-950));color:#fff;border-radius:11px;flex-shrink:0;place-items:center;width:38px;height:38px;display:grid}.drawer-head-text{min-width:0}.drawer-head h2{font-size:17px;line-height:1.25}.drawer-sub{color:var(--text-muted);margin-top:3px;font-size:12px}.drawer-body{flex:1;padding:22px;overflow-y:auto}.drawer-foot{border-top:1px solid var(--border);background:var(--surface);flex-direction:column;gap:10px;padding:16px 22px;display:flex}.form-section+.form-section{margin-top:22px}.form-section-title{font-family:var(--font-display);letter-spacing:.08em;text-transform:uppercase;color:var(--text-faint);border-bottom:1px dashed var(--border);margin-bottom:12px;padding-bottom:8px;font-size:11px;font-weight:700}.field-grid-2{grid-template-columns:1fr 1fr;gap:12px;display:grid}@media (width<=420px){.field-grid-2{grid-template-columns:1fr}}.input-affix{align-items:center;display:flex;position:relative}.input-affix input{padding-right:58px}.input-affix .affix{color:var(--text-faint);pointer-events:none;font-size:12px;font-weight:700;position:absolute;right:12px}.pill-voie{background:var(--info-bg);color:var(--info);border-radius:999px;align-items:center;gap:5px;padding:3px 10px;font-size:11px;font-weight:700;display:inline-flex}.pill-voie.maritime{background:var(--surface-2);color:var(--text-faint)}.preview-card{border:1px solid var(--border);border-radius:var(--radius);background:radial-gradient(circle at 100% 0%, #dc26260f, transparent 55%), var(--surface-2);margin-top:16px;padding:14px 16px}.preview-card .pc-label{letter-spacing:.06em;text-transform:uppercase;color:var(--text-faint);font-size:10.5px;font-weight:700}.preview-card .pc-row{color:var(--text-muted);justify-content:space-between;align-items:baseline;padding:5px 0;font-size:12.5px;display:flex}.preview-card .pc-total{border-top:1px solid var(--border);justify-content:space-between;align-items:baseline;margin-top:8px;padding-top:10px;display:flex}.preview-card .pc-total b{font-family:var(--font-display);color:var(--text);font-size:16px}.route-row{border-bottom:1px solid var(--border);grid-template-columns:1.4fr 220px 220px 80px;align-items:center;gap:20px;padding:18px 10px;display:grid}.route-row:last-child{border-bottom:0}.route-row:hover{background:var(--surface-2)}.route-row .fee-block{background:var(--surface-2);border-radius:10px;align-items:center;gap:10px;padding:10px 14px;display:flex}.route-row .fee-block .fee-icon{background:var(--red-50);width:30px;height:30px;color:var(--red-600);border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;display:flex}.route-row .fee-block.livraison .fee-icon{background:var(--info-bg);color:var(--info)}.route-row .fee-block .fee-text{flex-direction:column;gap:1px;min-width:0;display:flex}.route-row .fee-block .fee-label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;font-size:10.5px}.route-row .fee-block .fee-value{font-family:var(--font-display);white-space:nowrap;font-size:14.5px;font-weight:800}.route-row .row-actions-cell{justify-content:flex-end;gap:4px;display:flex}.route-list-head{text-transform:uppercase;letter-spacing:.05em;color:var(--text-faint);grid-template-columns:1.4fr 220px 220px 80px;gap:20px;padding:0 10px 10px;font-size:11px;font-weight:700;display:grid}.route-list-head span:last-child{text-align:right}@media (width<=1100px){.route-row,.route-list-head{grid-template-columns:1fr}.route-list-head{display:none}.route-row{gap:10px}.row-actions-cell{justify-content:flex-start}}.tl-wrap{padding:34px 10px 24px;overflow-x:auto}.tl-track{align-items:flex-start;min-width:max-content;display:flex}.tl-node{opacity:0;flex-direction:column;flex-shrink:0;align-items:center;width:150px;animation:.45s cubic-bezier(.16,1,.3,1) forwards tlNodeIn;display:flex}@keyframes tlNodeIn{0%{opacity:0;transform:translateY(10px)scale(.9)}to{opacity:1;transform:translateY(0)scale(1)}}.tl-dot{background:linear-gradient(155deg, var(--red-600), var(--red-700));color:#fff;width:46px;height:46px;font-family:var(--font-display);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:16px;font-weight:800;display:flex;position:relative;box-shadow:0 6px 16px -4px #dc262680}.tl-node .libelle{text-align:center;margin-top:12px;padding:0 4px;font-size:13px;font-weight:700;line-height:1.3}.tl-node .lieu{color:var(--text-muted);text-align:center;margin-top:3px;padding:0 6px;font-size:11px}.tl-node .tl-delete{opacity:0;margin-top:8px;transition:opacity .15s}.tl-node:hover .tl-delete{opacity:1}.tl-picker .tl-node{cursor:pointer;background:0 0;border:0;border-radius:12px;padding:4px;font-family:inherit;transition:background .15s}.tl-picker .tl-node:hover{background:var(--surface-2)}.tl-picker.readonly .tl-node{cursor:default;opacity:1}.tl-picker.readonly .tl-node:hover{background:0 0}.tl-picker .tl-dot{background:var(--surface-2);color:var(--text-faint);border:1.5px solid var(--border-strong);box-shadow:none;transition:background .18s,color .18s,box-shadow .18s,transform .18s}.tl-picker .tl-node .libelle{color:var(--text-muted);transition:color .15s}.tl-picker .tl-node.active .tl-dot{background:linear-gradient(155deg, var(--red-600), var(--red-700));color:#fff;box-shadow:0 0 0 4px var(--red-50), 0 6px 16px -4px #dc262680;border-color:#0000;transform:scale(1.08)}.tl-picker .tl-node.active .libelle{color:var(--text)}.tl-connector{flex-shrink:0;align-items:center;width:56px;height:46px;margin-top:0;display:flex;position:relative}.tl-connector .line{background:var(--border-strong);transform-origin:0;height:2px;animation:.4s forwards tlLineGrow;position:absolute;top:23px;left:0;right:0;transform:scaleX(0)}@keyframes tlLineGrow{to{transform:scaleX(1)}}.tl-insert{z-index:2;border:1.5px dashed var(--border-strong);background:var(--surface);width:24px;height:24px;color:var(--text-faint);cursor:pointer;border-radius:50%;justify-content:center;align-items:center;margin:0 auto;transition:border-color .15s,color .15s,transform .15s;display:flex;position:relative}.tl-insert:hover{border-color:var(--red-600);color:var(--red-600);border-style:solid;transform:scale(1.15)}.switch-row{border:1px solid var(--border);background:var(--surface-2);border-radius:10px;justify-content:space-between;align-items:center;margin-bottom:14px;padding:12px 14px;display:flex}.switch-row .switch-label{font-size:13.5px;font-weight:700}.switch{background:var(--border-strong);cursor:pointer;border:0;border-radius:999px;flex-shrink:0;width:42px;height:24px;transition:background .15s;position:relative}.switch:after{content:"";background:#fff;border-radius:50%;width:18px;height:18px;transition:transform .18s cubic-bezier(.34,1.56,.64,1);position:absolute;top:3px;left:3px;box-shadow:0 1px 3px #1017284d}.switch.on{background:var(--red-600)}.switch.on:after{transform:translate(18px)}.expedition-layout{grid-template-columns:2fr 1fr;align-items:start;gap:22px;min-width:0;display:grid}.expedition-layout>*{min-width:0}@media (width<=1100px){.expedition-layout{grid-template-columns:1fr}}.proforma{border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface);position:sticky;top:20px;overflow:hidden}.proforma-brand{background:var(--navy-950);color:#fff;align-items:center;gap:12px;padding:20px;display:flex}.proforma-brand .name{font-family:var(--font-display);font-size:15px;font-weight:800}.proforma-brand .sub{color:var(--navy-100);font-size:11px}.proforma-title{text-align:center;border-bottom:1px dashed var(--border);padding:16px 20px 10px}.proforma-title h3{font-family:var(--font-display);letter-spacing:.06em;text-transform:uppercase;font-size:15px}.proforma-meta{border-bottom:1px solid var(--border);flex-direction:column;gap:6px;padding:14px 20px;font-size:12.5px;display:flex}.proforma-meta .row{justify-content:space-between;display:flex}.proforma-meta .row span:first-child{color:var(--text-muted)}.proforma-meta .row span:last-child{font-weight:700}.proforma-client{border-bottom:1px solid var(--border);padding:14px 20px;font-size:12.5px}.proforma-client .label{text-transform:uppercase;letter-spacing:.05em;color:var(--text-faint);margin-bottom:4px;font-size:10.5px}.proforma-lines{padding:14px 20px}.proforma-lines .line{justify-content:space-between;padding:7px 0;font-size:13px;display:flex}.proforma-lines .line span:first-child{color:var(--text-muted)}.proforma-lines .line span:last-child{font-weight:600}.proforma-total{background:var(--surface-2);border-top:2px solid var(--navy-950);justify-content:space-between;align-items:baseline;padding:16px 20px;display:flex}.proforma-total .label{font-size:13px;font-weight:700}.proforma-total .value{font-family:var(--font-display);font-size:20px;font-weight:800}.proforma-actions{gap:8px;padding:16px 20px;display:flex}.proforma-actions .btn{padding:11px;font-size:13px}.proforma-refs{flex-direction:column;gap:3px;margin-top:8px;display:flex}@media print{@page{size:A4 portrait;margin:14mm}.expedition-layout{display:block!important}.proforma{border:none;border-radius:0;width:100%;max-width:100%;font-size:13px;position:static}.proforma-brand{-webkit-print-color-adjust:exact;print-color-adjust:exact;padding:24px 28px;background:#101a2c!important}.proforma-brand .name{font-size:18px}.proforma-title{padding:22px 28px 14px}.proforma-title h3{font-size:18px}.proforma-meta,.proforma-client,.proforma-lines{padding:18px 28px;font-size:13px}.proforma-lines .line{padding:9px 0;font-size:14px}.proforma-total{padding:20px 28px}.proforma-total .value{font-size:24px}.proforma-actions{display:none!important}}.user-cell{align-items:center;gap:10px;display:flex}.user-avatar{background:var(--navy-950);color:#fff;width:34px;height:34px;font-family:var(--font-display);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:13px;font-weight:800;display:flex}.user-cell .whatsapp-tag{color:var(--text-faint);align-items:center;gap:6px;font-size:12.5px;display:inline-flex}.badge-role{background:var(--red-50);color:var(--red-700);align-items:center;gap:5px;display:inline-flex}.form-section{margin-bottom:22px}.form-section-title{text-transform:uppercase;letter-spacing:.05em;color:var(--text-faint);border-bottom:1px solid var(--border);align-items:center;gap:7px;margin-bottom:12px;padding-bottom:8px;font-size:12px;font-weight:800;display:flex}.field-row{grid-template-columns:1fr 1fr;gap:12px;display:grid}.perm-grid{flex-direction:column;gap:10px;display:flex}.perm-page{border:1px solid var(--border);background:var(--surface-2);border-radius:10px;padding:12px 14px}.perm-page-head{justify-content:space-between;align-items:center;margin-bottom:10px;display:flex}.perm-page-head .name{color:var(--text);font-size:13px;font-weight:700}.perm-page-head .toggle-all{color:var(--red-600);cursor:pointer;background:0 0;border:0;padding:0;font-size:11.5px;font-weight:700}.perm-actions{flex-wrap:wrap;gap:12px 18px;display:flex}.perm-check{color:var(--text-muted);cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:7px;font-size:12.5px;display:flex}.perm-check input{width:15px;height:15px;accent-color:var(--red-600);cursor:pointer;margin:0}.perm-check.checked{color:var(--text);font-weight:600}.role-list{flex-direction:column;gap:10px;margin-bottom:18px;display:flex}.role-card{border:1px solid var(--border);background:var(--surface);border-radius:10px;justify-content:space-between;align-items:center;gap:10px;padding:12px 14px;display:flex}.role-card .role-info{align-items:center;gap:10px;min-width:0;display:flex}.role-card .role-name{font-size:13.5px;font-weight:700}.role-card .role-count{color:var(--text-muted);font-size:11.5px}.role-new{border:1.5px dashed var(--border-strong);border-radius:10px;margin-bottom:18px;padding:14px}.role-new-head{color:var(--text);align-items:center;gap:8px;margin-bottom:12px;font-size:13px;font-weight:700;display:flex}.modal-root{z-index:110;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal-backdrop{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#0e152673;animation:.2s drawerFade;position:absolute;inset:0}.modal-card{background:var(--surface);border-radius:var(--radius-lg);width:min(380px,92vw);padding:22px;animation:.2s drawerFade;position:relative;box-shadow:0 20px 50px #10172840}.modal-card h2{align-items:center;gap:8px;margin-bottom:16px;font-size:16px;display:flex}.exp-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:18px;display:flex}.exp-header h1{font-size:21px}.filters-bar{grid-template-columns:repeat(5,1fr) auto;align-items:end;gap:12px;display:grid}.filters-bar .field{margin-bottom:0}@media (width<=1200px){.filters-bar{grid-template-columns:repeat(3,1fr)}}@media (width<=700px){.filters-bar{grid-template-columns:1fr 1fr}}.exp-list{flex-direction:column;gap:14px;display:flex}.exp-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden}.exp-card.cancelled{opacity:.72}.exp-card-head{flex-wrap:wrap;align-items:center;gap:18px;padding:16px 18px;display:flex}.exp-card-main{flex-direction:column;gap:3px;min-width:140px;display:flex}.exp-shipmark{color:var(--red-600);text-transform:uppercase;font-family:JetBrains Mono,SFMono-Regular,Consolas,monospace;font-size:13px;font-weight:700}.exp-track{color:var(--navy-950);font-family:JetBrains Mono,SFMono-Regular,Consolas,monospace;font-size:13px;font-weight:700}.exp-numero{color:var(--text-faint);font-size:11px}.exp-card-field{flex-direction:column;gap:2px;min-width:100px;display:flex}.exp-card-field .k{text-transform:uppercase;letter-spacing:.05em;color:var(--text-faint);font-size:10px;font-weight:700}.exp-card-field .v{color:var(--text);font-size:13px;font-weight:600}.exp-total{text-align:right;flex-direction:column;gap:2px;margin-left:auto;display:flex}.exp-total .k{text-transform:uppercase;letter-spacing:.05em;color:var(--text-faint);font-size:10px;font-weight:700}.exp-total .v{font-family:var(--font-display);color:var(--red-600);font-size:17px;font-weight:800}.exp-card-actions{gap:4px;display:flex}.exp-status-zone{border-top:1px solid var(--border);background:var(--navy-950);padding:4px 8px}.exp-status-zone .tl-node .libelle{color:#fff}.exp-status-zone .tl-node .lieu{color:#ffffffa6}.exp-status-zone .tl-picker .tl-node:hover{background:#ffffff14}.exp-status-zone .tl-picker .tl-dot{color:#fffc;background:#ffffff1a;border-color:#ffffff4d}.exp-status-zone .tl-picker .tl-node.active .libelle{color:#fff}.exp-status-zone .tl-connector .line{background:#ffffff4d}.filters-statut{border-top:1px solid var(--border);margin-top:16px;padding-top:14px}.filters-statut-head{justify-content:space-between;align-items:center;margin-bottom:4px;display:flex}.filters-statut-head label{color:var(--text-muted);font-size:13px;font-weight:600}.statut-annulee-toggle{cursor:pointer;border:1.5px solid #0000;margin-top:6px}.statut-annulee-toggle.active{border-color:var(--red-600)}.exp-cancelled-zone{border-top:1px solid var(--border);background:var(--surface-2);align-items:center;gap:8px;padding:14px 18px;display:flex}.badge-cancelled{background:var(--red-50);color:var(--red-700);align-items:center;gap:5px;display:inline-flex}.exp-fees{border-top:1px solid var(--border);flex-direction:column;gap:4px;padding:10px 18px;display:flex}.exp-fee-line{justify-content:space-between;gap:12px;font-size:12.5px;display:flex}.exp-fee-line span:first-child{color:var(--text-muted)}.exp-fee-line span:last-child{color:var(--text);white-space:nowrap;font-weight:600}.exp-fee-line.muted{color:var(--text-faint);font-style:italic}.exp-fees-total{background:var(--surface-2);border-top:1px solid var(--border);justify-content:space-between;align-items:baseline;padding:10px 18px;font-size:13px;font-weight:700;display:flex}.exp-fees-total span:last-child{font-family:var(--font-display);color:var(--red-600);font-size:16px;font-weight:800}.exp-status-print{color:#333;padding:8px 18px;font-size:12px}.print-letterhead{border-bottom:3px solid var(--navy-950);margin-bottom:18px;padding-bottom:14px}.print-letterhead-top{align-items:flex-start;gap:16px;margin-bottom:12px;display:flex}.print-company{flex:1}.print-company .name{font-family:var(--font-display);color:var(--navy-950);font-size:18px;font-weight:800}.print-company .line{color:#444;margin-top:2px;font-size:11.5px}.print-doc-meta{text-align:right}.print-doc-meta .title{font-family:var(--font-display);text-transform:uppercase;letter-spacing:.05em;color:var(--red-600);font-size:15px;font-weight:800}.print-doc-meta .line{color:#444;margin-top:3px;font-size:11px}.whatsapp-verified-badge{background:var(--success-bg);color:var(--success);border-radius:7px;align-items:center;gap:7px;padding:10px 12px;font-size:13.5px;font-weight:700;display:flex}.auth-tabs{background:var(--surface-2);isolation:isolate;border-radius:12px;margin-bottom:20px;padding:5px;display:flex;position:relative}.auth-tabs:before{content:"";z-index:-1;background:var(--surface);border-radius:8px;width:calc(50% - 5px);transition:transform .32s cubic-bezier(.4,0,.2,1);position:absolute;top:5px;bottom:5px;left:5px;box-shadow:0 2px 8px #10172824}.auth-tabs[data-active="1"]:before{transform:translate(100%)}.auth-tabs button{min-width:0;color:var(--text-muted);cursor:pointer;background:0 0;border:0;border-radius:8px;flex:1;justify-content:center;align-items:center;gap:6px;padding:10px 8px;font-size:12.5px;font-weight:700;transition:color .2s;display:inline-flex}.auth-tabs button.active{color:var(--text)}.auth-tabs button svg{flex-shrink:0}.print-filters-summary{color:#333;background:#f3f4f6;border-radius:6px;flex-wrap:wrap;gap:6px 20px;padding:8px 12px;font-size:11px;display:flex}
