:root{--navy:#071426;--blue:#1687ff;--ink:#152235;--muted:#718096;--bg:#f4f7fb;--line:#e4e9f1;--white:#fff;--gold:#d8b36a}*{box-sizing:border-box}body{margin:0;font-family:Inter,Arial,sans-serif;color:var(--ink);background:var(--bg)}button,input,select,textarea{font:inherit}button{cursor:pointer;border:0}.app{display:flex;min-height:100vh}.sidebar{width:250px;background:var(--navy);color:#fff;padding:24px 16px;display:flex;flex-direction:column}.brand{display:flex;align-items:center;gap:12px;padding:4px 10px 30px}.brand b{font-size:20px;letter-spacing:1px}.brand small{display:block;color:#93a5bd;font-size:10px;margin-top:3px}.logo-mark{width:40px;height:40px;border:2px solid var(--blue);display:grid;place-items:center;font-weight:800;font-size:22px;color:#fff;transform:skew(-8deg)}nav{display:grid;gap:6px}.nav{background:transparent;color:#aebdd0;text-align:left;padding:13px 12px;border-radius:9px}.nav:hover,.nav.active{background:#102541;color:#fff}.side-footer{margin-top:auto;color:#aebdd0;font-size:12px;padding:16px 10px;border-top:1px solid #19304b}.side-footer span{color:#6ee7b7}main{flex:1;padding:28px 38px;max-width:1500px;margin:auto;width:100%}header{display:flex;justify-content:space-between;align-items:center;margin-bottom:26px}h1{font-size:30px;margin:4px 0}.eyebrow{font-size:11px;font-weight:700;letter-spacing:1.5px;color:var(--blue)}.header-actions{display:flex;gap:12px;align-items:center}.avatar{width:40px;height:40px;border-radius:50%;background:var(--blue);color:#fff;display:grid;place-items:center;font-weight:700}.ghost,.primary{padding:11px 15px;border-radius:8px}.ghost{background:#eef3f8;color:#29405b}.primary{background:var(--blue);color:#fff;font-weight:700}.hero{background:linear-gradient(110deg,#0b1d34,#12365d);color:#fff;border-radius:16px;padding:30px;display:flex;justify-content:space-between;align-items:center;gap:20px}.hero h2{font-size:26px;margin:7px 0}.hero p{color:#b9c8d9}.cards{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin:20px 0}.card,.panel,.property,.form-panel{background:#fff;border:1px solid var(--line);border-radius:14px}.card{padding:20px}.card span{display:block;color:var(--muted);font-size:13px}.card strong{font-size:30px;display:block;margin:9px 0}.card em{font-style:normal;color:#15956b;font-size:12px}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:18px}.panel{padding:20px}.panel-head,.row,.validation{display:flex;justify-content:space-between;align-items:center;gap:12px}.panel-head h2,.panel-head h3{margin:0}.panel-head span{color:var(--blue);font-size:13px}.activity{padding:16px 0;border-bottom:1px solid var(--line)}.activity:last-child{border-bottom:0}.activity small{display:block;color:var(--muted);margin-top:5px}.validation{padding:13px 0;border-bottom:1px solid var(--line)}.badge{padding:5px 8px;border-radius:20px;font-size:11px;font-weight:700}.green{background:#e5f8f0;color:#087a58}.orange{background:#fff3df;color:#a45a00}.toolbar{display:flex;gap:10px;margin-bottom:18px}.search{background:#fff;border:1px solid var(--line);padding:10px 13px;border-radius:8px;flex:1}.search input{border:0;outline:0;width:90%}.toolbar select{border:1px solid var(--line);border-radius:8px;padding:0 12px}.property-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}.photo{height:150px;background:linear-gradient(135deg,#dfe8f3,#a8c2dc);display:grid;place-items:center;font-size:55px;border-radius:14px 14px 0 0}.property-body{padding:16px}.property-body p,.muted{color:var(--muted);font-size:13px}.property-body h3{margin:12px 0 6px}.meta{font-size:13px;color:var(--muted)}.actions{display:flex;gap:8px;margin-top:15px}.actions button{background:#eef3f8;padding:8px 10px;border-radius:7px}.form-panel{padding:24px}.steps{display:flex;gap:8px;overflow:auto;margin-bottom:25px}.step{white-space:nowrap;padding:8px 11px;border-radius:20px;background:#eef3f8;color:#66778c;font-size:12px}.step.active{background:#dceeff;color:#0872d9;font-weight:700}.section{padding:20px 0;border-bottom:1px solid var(--line)}.section h3{margin-top:0}.mapbox{min-height:150px;border-radius:12px;background:#e8eef5;display:flex;align-items:center;justify-content:center;gap:20px;margin-bottom:15px}.pin{font-size:42px}.form-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}label{font-size:12px;color:#53657a;font-weight:600}label input,label select,label textarea{display:block;width:100%;margin-top:7px;border:1px solid #dbe3ec;border-radius:8px;padding:11px;background:#fff;color:var(--ink)}.upload{display:inline-block;padding:18px;border:1px dashed #aebdcd;border-radius:10px;margin:8px 10px 8px 0;background:#f8fafc}.form-actions{display:flex;justify-content:flex-end;gap:10px;padding-top:20px}table{width:100%;border-collapse:collapse;margin-top:15px}th,td{text-align:left;padding:14px;border-bottom:1px solid var(--line);font-size:13px}th{color:var(--muted);font-weight:600}textarea{min-height:160px;resize:vertical;margin:18px 0}.view{display:none}.view.active{display:block}@media(max-width:1000px){.sidebar{width:205px}.cards,.property-grid{grid-template-columns:repeat(2,1fr)}.form-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:720px){.sidebar{display:none}main{padding:20px}.hero,.toolbar{flex-direction:column;align-items:stretch}.cards,.grid2,.property-grid,.form-grid{grid-template-columns:1fr}header{margin-bottom:18px}.hero h2{font-size:22px}}
.invoice-layout{display:grid;grid-template-columns:minmax(420px,1fr) 420px;gap:22px;align-items:start}.invoice-editor{padding:22px}.invoice-paper{background:#fff;color:#15191f;border:1px solid #d9dde3;box-shadow:0 12px 35px rgba(7,20,38,.12);padding:24px 22px;max-width:420px;font-family:Arial,sans-serif}.inv-head{display:flex;align-items:center;gap:10px;border-bottom:1px solid #222;padding-bottom:12px}.inv-logo{width:54px;height:54px;border:5px solid #111;border-radius:18px 3px 18px 3px;display:grid;place-items:center;font-size:32px;font-weight:900}.inv-brand{font-size:25px;font-weight:900;letter-spacing:.5px}.inv-brand b{font-weight:500}.inv-tag{font-size:9px;font-style:italic}.inv-services{display:grid;grid-template-columns:repeat(3,1fr);gap:4px;text-align:center;font-size:8px;font-weight:800;padding:12px 0;border-bottom:1px dashed #555}.inv-title{text-align:center;letter-spacing:4px;font-size:24px;margin:14px 0}.inv-info{display:grid;grid-template-columns:1fr 1fr;gap:14px;border-bottom:1px dashed #555;padding-bottom:12px;font-size:8px;line-height:1.9}.inv-table{width:100%;font-size:8px;border-collapse:collapse;margin-top:12px}.inv-table th{background:#15191f;color:#fff;padding:7px 4px}.inv-table td{padding:6px 4px;border-bottom:1px solid #ddd}.inv-totals{text-align:right;font-size:9px;line-height:1.8;border-bottom:1px dashed #555;padding:10px 0}.inv-totals .grand{font-size:12px;background:#15191f;color:#fff;padding:6px}.inv-payment{display:grid;grid-template-columns:1fr 1fr;gap:8px;font-size:9px;padding:12px 0;border-bottom:1px dashed #555}.inv-payment strong{grid-column:1/-1;text-align:center}.inv-contact{display:flex;gap:12px;align-items:center;font-size:8px;padding:14px 0;border-bottom:1px dashed #555}.qr-placeholder{width:68px;height:68px;border:5px solid #111;display:grid;place-items:center;font-weight:900;font-size:18px}.inv-thanks{text-align:center;font-size:12px;font-style:italic;padding:15px 0}.inv-foot{display:flex;justify-content:space-between;font-size:7px;border-top:1px dashed #555;padding-top:9px}.invoice-editor .section{padding:15px 0}.invoice-line{display:grid;grid-template-columns:1fr 75px 120px 105px 34px;gap:7px;margin-bottom:8px}.invoice-line input{margin-top:0}.remove-line{background:#ffe7e7;color:#a22;border-radius:7px}.invoice-paper [data-bind]{font-weight:700}@media(max-width:1050px){.invoice-layout{grid-template-columns:1fr}.invoice-paper{max-width:100%}}@media print{body *{visibility:hidden!important}.invoice-paper,.invoice-paper *{visibility:visible!important}.invoice-paper{position:absolute;left:0;top:0;width:80mm;max-width:80mm;box-shadow:none;border:0;padding:5mm}.sidebar,header{display:none!important}main{padding:0!important}.invoice-layout{display:block}.invoice-editor{display:none!important}}

html{scroll-behavior:smooth}body{overflow-x:hidden}.mobile-bar{display:none}
@media(max-width:720px){
  body{padding-bottom:76px}.app{display:block}.sidebar{display:none}
  main{padding:16px 14px 24px;max-width:none}
  header{position:sticky;top:0;z-index:20;background:rgba(244,247,251,.95);backdrop-filter:blur(10px);padding:10px 0;margin:-16px -14px 18px;padding-left:14px;padding-right:14px}
  h1{font-size:23px}.header-actions .ghost{padding:9px}.hero{padding:20px;border-radius:13px}
  .hero h2{font-size:20px;line-height:1.2}.hero p{font-size:13px}
  .cards{grid-template-columns:repeat(2,1fr);gap:10px}.card{padding:14px}.card strong{font-size:25px}
  .grid2{grid-template-columns:1fr}.toolbar{gap:8px}.toolbar select,.toolbar .primary{width:100%;min-height:44px}
  .search{min-height:44px}.property-grid{grid-template-columns:1fr}.property{overflow:hidden}
  .photo{height:135px}.form-panel{padding:15px}.steps{margin:0 -2px 18px;padding-bottom:4px}
  .form-grid{grid-template-columns:1fr;gap:12px}.section{padding:16px 0}
  label input,label select,label textarea{min-height:44px;font-size:16px}.ghost,.primary{min-height:44px}
  .mapbox{min-height:180px;text-align:center;padding:18px}.form-actions{position:sticky;bottom:76px;background:#fff;margin:0 -15px;padding:12px 15px;border-top:1px solid var(--line);z-index:10}
  table{display:block;overflow-x:auto;white-space:nowrap}.invoice-layout{display:block}.invoice-paper{width:100%;max-width:none;padding:16px}
  .invoice-editor{margin-bottom:18px}.invoice-line{grid-template-columns:minmax(120px,1fr) 60px 95px 90px 34px;overflow-x:auto}
  .inv-info{font-size:8px}.inv-contact{font-size:8px}
  .mobile-bar{display:grid;grid-template-columns:repeat(5,1fr);position:fixed;bottom:0;left:0;right:0;height:66px;background:#071426;color:#fff;z-index:100;box-shadow:0 -6px 20px rgba(0,0,0,.15);padding-bottom:env(safe-area-inset-bottom)}
  .mobile-bar button{background:transparent;color:#aebdd0;display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:20px;gap:2px}
  .mobile-bar button small{font-size:9px}.mobile-bar button.active{color:#fff}.mobile-bar .mobile-add{width:48px;height:48px;border-radius:50%;background:#1687ff;color:#fff;align-self:center;justify-self:center;font-size:27px}
}
@media(min-width:721px) and (max-width:1100px){
  .sidebar{width:220px}main{padding:24px}.cards{grid-template-columns:repeat(2,1fr)}.property-grid{grid-template-columns:repeat(2,1fr)}
  .invoice-layout{grid-template-columns:1fr 420px}
}
@media(min-width:1101px){main{min-height:100vh}.invoice-layout{max-width:1250px}}
@media(orientation:landscape) and (max-width:900px){
  .mobile-bar{height:58px}.cards{grid-template-columns:repeat(4,1fr)}.property-grid{grid-template-columns:repeat(2,1fr)}
}

/* IMMOXIA cinematic splash + administrator login */
.auth-screen{position:fixed;inset:0;z-index:9999;background:#020b1b;color:#fff;overflow:hidden;display:flex;align-items:center;justify-content:space-between;padding:5vw 6vw;opacity:1;transition:opacity .7s ease}
.auth-screen.hidden{opacity:0;pointer-events:none}
.auth-background{position:absolute;inset:0;background-image:url("assets/immoxia-login-background.png");background-size:cover;background-position:center;filter:saturate(1.08)}
.auth-overlay{position:absolute;inset:0;background:linear-gradient(90deg,rgba(2,11,27,.15),rgba(2,11,27,.06) 55%,rgba(2,11,27,.42))}
.auth-brand{position:relative;z-index:2;text-align:center;margin-left:4vw;margin-top:-3vh;text-shadow:0 4px 22px #000}
.auth-logo-x{font-size:150px;line-height:.8;font-weight:900;color:#1687ff;text-shadow:0 0 35px rgba(22,135,255,.75);font-style:italic}
.auth-brand-name{font-size:72px;font-weight:900;letter-spacing:2px;margin-top:22px}.auth-brand-name span,.login-brand span{color:#1687ff}.auth-slogan{font-size:23px;margin-top:14px;letter-spacing:.5px}
.auth-stars{position:absolute;z-index:3;left:25%;bottom:17%;display:flex;gap:28px}.auth-stars span{font-size:35px;color:#ffd45a;text-shadow:0 0 18px #ffb000;opacity:.15;transform:scale(.7);animation:starPulse 1s ease-in-out infinite}.auth-stars span:nth-child(2){animation-delay:.12s}.auth-stars span:nth-child(3){animation-delay:.24s}.auth-stars span:nth-child(4){animation-delay:.36s}.auth-stars span:nth-child(5){animation-delay:.48s}.auth-stars span:nth-child(6){animation-delay:.60s}
@keyframes starPulse{50%{opacity:1;transform:scale(1.15)}100%{opacity:.2;transform:scale(.75)}}
.auth-loader{position:absolute;z-index:3;left:25%;bottom:7%;background:rgba(3,16,35,.88);border:1px solid #1687ff;border-radius:14px;padding:12px 18px;display:flex;align-items:center;gap:10px;font-size:12px;box-shadow:0 0 30px rgba(0,132,255,.2)}.loader-ring{width:23px;height:23px;border:3px solid #164e84;border-top-color:#18bfff;border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}
.login-card{position:relative;z-index:4;width:min(430px,38vw);min-width:320px;background:rgba(3,16,35,.9);border:1px solid #1687ff;border-radius:22px;padding:32px;box-shadow:0 0 45px rgba(0,132,255,.25),inset 0 0 25px rgba(22,135,255,.06);backdrop-filter:blur(14px);opacity:0;transform:translateY(20px);animation:loginAppear .8s ease 5s forwards}.login-brand{font-size:31px;font-weight:900;text-align:center}.login-card>p{text-align:center;color:#b9c8d9;margin:7px 0 22px;font-size:13px}.login-card hr{border:0;border-top:1px solid #1b4169}.login-card h2{margin:22px 0 5px;font-size:21px}.login-card>small{color:#94a9c0}.login-card label{display:block;color:#18bfff;font-size:12px;margin-top:18px}.login-card input{width:100%;height:46px;margin-top:7px;background:#06162b;border:1px solid #1477bf;border-radius:9px;color:#fff;padding:0 13px;outline:none}.login-card input:focus{border-color:#18bfff;box-shadow:0 0 0 2px rgba(24,191,255,.12)}.password-wrap{position:relative}.password-wrap input{padding-right:45px}.password-wrap button{position:absolute;right:8px;top:13px;background:transparent;color:#fff;font-size:19px}.login-options{display:flex;justify-content:space-between;align-items:center;gap:8px;margin:14px 0}.login-options .remember{display:flex;align-items:center;color:#fff;font-size:11px;margin:0}.login-options .remember input{width:16px;height:16px;margin:0 6px 0 0}.forgot{background:none;color:#18bfff;font-size:11px}.login-btn{width:100%;height:48px;border-radius:10px;background:linear-gradient(90deg,#096cff,#13b9ee);color:#fff;font-weight:800;font-size:15px;box-shadow:0 8px 25px rgba(9,108,255,.28)}.login-error{height:18px;text-align:center;color:#ff7d7d;font-size:11px;margin-top:10px}.login-card footer{text-align:center;color:#718ba8;font-size:10px;margin-top:18px}
@keyframes loginAppear{to{opacity:1;transform:translateY(0)}}
body.auth-lock{overflow:hidden}
@media(max-width:900px){.auth-screen{padding:25px;justify-content:center}.auth-brand{display:none}.auth-stars{left:50%;transform:translateX(-50%);bottom:7%;gap:12px}.auth-stars span{font-size:22px}.auth-loader{left:50%;transform:translateX(-50%);bottom:1%;white-space:nowrap}.login-card{width:min(430px,94vw);min-width:0;padding:24px}.login-card{animation-delay:5s}}
@media(max-height:650px) and (min-width:901px){.auth-brand-name{font-size:52px}.auth-logo-x{font-size:105px}.auth-slogan{font-size:18px}.auth-stars{bottom:10%}.login-card{padding:20px}.login-card h2{margin-top:12px}.login-card label{margin-top:11px}}

/* FLOW PIVOT SERVICES — CTI workspace */
.nav-group-title{font-size:9px;letter-spacing:1.4px;color:#6f87a2;font-weight:800;padding:18px 14px 7px}.cti-welcome{display:flex;justify-content:space-between;align-items:center;gap:20px;padding:26px;border-radius:18px;background:linear-gradient(135deg,#071426,#0d2a4b);color:#fff;box-shadow:0 15px 35px rgba(7,20,38,.16);margin-bottom:18px}.cti-welcome h2{margin:5px 0 7px;font-size:28px}.cti-welcome p{margin:0;color:#b9c8d9}.big-action{padding:14px 20px;white-space:nowrap}.cti-kpis{display:grid;grid-template-columns:repeat(6,1fr);gap:12px;margin-bottom:18px}.cti-kpis .card{min-height:110px}.cti-kpis .card strong{font-size:28px}.cti-six-actions{display:grid;grid-template-columns:repeat(6,1fr);gap:12px;margin-bottom:18px}.cti-six-actions button{border:1px solid #d9e2ed;background:#fff;border-radius:14px;padding:18px 10px;display:flex;flex-direction:column;align-items:center;gap:7px;box-shadow:0 5px 16px rgba(7,20,38,.05);transition:.2s}.cti-six-actions button:hover{transform:translateY(-2px);border-color:#1687ff;box-shadow:0 9px 22px rgba(7,20,38,.09)}.cti-six-actions b{font-size:12px;color:#071426}.cti-six-actions small{font-size:9px;color:#73869b;text-align:center}.pipeline{display:grid;grid-template-columns:repeat(7,1fr);gap:7px}.pipeline>div{background:#f4f7fb;border:1px solid #e1e7ef;border-radius:9px;padding:10px 5px;text-align:center;font-size:10px;font-weight:700}.pipeline b{display:block;font-size:18px;color:#1687ff}.pipeline small{font-size:9px;color:#718399}.terrain-map{height:390px;border-radius:14px;position:relative;overflow:hidden;background:#dce8e1;border:1px solid #c5d4cb}.map-grid{position:absolute;inset:0;background-image:linear-gradient(25deg,transparent 48%,rgba(255,255,255,.8) 49%,rgba(255,255,255,.8) 51%,transparent 52%),linear-gradient(155deg,transparent 48%,rgba(255,255,255,.8) 49%,rgba(255,255,255,.8) 51%,transparent 52%);background-size:90px 90px}.map-pin{position:absolute;font-size:38px;text-shadow:0 2px 5px rgba(0,0,0,.3)}.pin-blue{left:25%;top:28%;color:#1687ff}.pin-green{left:62%;top:48%;color:#1eb86b}.pin-orange{left:45%;top:72%;color:#f39a24}.pin-red{left:77%;top:22%;color:#e55353}.map-legend{position:absolute;left:16px;bottom:16px;background:rgba(255,255,255,.95);padding:10px 13px;border-radius:10px;display:flex;gap:14px;font-size:10px}.terrain-actions{display:flex;gap:10px;margin-top:12px}.terrain-actions button{background:#fff;border:1px solid #d9e2ed;padding:11px 14px;border-radius:9px}.doc-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.doc-grid>div{border:1px solid #dce4ee;border-radius:12px;padding:18px;display:flex;flex-direction:column;gap:6px;background:#fbfcfe}.doc-grid b{font-size:13px}.doc-grid small{color:#73869b}.transaction-flow{margin-top:18px}
@media(max-width:1100px){.cti-kpis{grid-template-columns:repeat(3,1fr)}.cti-six-actions{grid-template-columns:repeat(3,1fr)}}
@media(max-width:720px){.cti-welcome{display:block;padding:19px}.cti-welcome h2{font-size:23px}.big-action{width:100%;margin-top:15px}.cti-kpis{grid-template-columns:repeat(2,1fr)}.cti-six-actions{grid-template-columns:repeat(2,1fr)}.pipeline{grid-template-columns:repeat(2,1fr)}.terrain-map{height:300px}.map-legend{flex-wrap:wrap;gap:8px}.terrain-actions{display:grid;grid-template-columns:1fr}.doc-grid{grid-template-columns:1fr}}

.demo-roles{margin:10px 0;padding:8px;border:1px solid #1b4169;border-radius:8px;color:#8db7d8;font-size:10px;text-align:center}.role-hero{padding:26px;border-radius:16px;background:linear-gradient(135deg,#071426,#0b2541);color:#fff;margin-bottom:18px;border:1px solid #164a79}.role-hero h2{margin:6px 0;font-size:28px}.role-hero p{color:#aac0d4;margin:0;max-width:760px}.role-view .panel{margin-bottom:18px}
.default-password{margin-top:16px;background:#eef6ff;border:1px solid #cfe5ff;border-radius:10px;padding:13px;color:#26415e;font-size:12px}.default-password code{font-weight:900;color:#0872d9}.default-password small{display:block;margin-top:5px;color:#718096}.password-modal{position:fixed;inset:0;background:rgba(2,11,27,.78);backdrop-filter:blur(8px);z-index:10001;display:none;align-items:center;justify-content:center;padding:20px}.password-modal.open{display:flex}.password-card{width:min(430px,94vw);background:#fff;border-radius:18px;padding:28px;box-shadow:0 20px 60px rgba(0,0,0,.3)}.password-card .login-brand{text-align:left;color:#071426;margin-bottom:14px}.password-card p{font-size:13px;color:#66778c;line-height:1.5}.password-card label{display:block;margin-top:15px}.password-card input{display:block;width:100%;height:45px;margin-top:6px;border:1px solid #dbe3ec;border-radius:8px;padding:0 12px}.admin-only-view{display:none}.admin-only{display:none}
.property .actions{display:flex;gap:7px;flex-wrap:wrap}.property .actions button{border:1px solid #dbe3ec;background:#fff;border-radius:8px;padding:8px 9px;font-size:10px}.property .actions .danger{color:#c63b3b;border-color:#f0caca}.property .ref{font-size:10px;color:#73869b;margin-top:3px}.barcode-card{text-align:center}.barcode-card .login-brand{margin-bottom:8px}.barcode-text{font-weight:800;letter-spacing:2px;margin:10px 0 0}.property-modal-card{max-height:90vh;overflow:auto}.property-detail-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:9px;margin:15px 0}.property-detail{background:#f6f8fb;border-radius:9px;padding:10px}.property-detail small{display:block;color:#74859a;font-size:9px}.property-detail b{font-size:12px}.maps-link{display:inline-block;margin-top:8px;color:#0872d9;font-weight:700}.empty-state{padding:28px;text-align:center;color:#718399;border:1px dashed #cbd7e4;border-radius:14px;background:#fbfcfe}

/* Facture Pivot Services - modèle professionnel */
.inv-logo-mark{display:flex;align-items:center;gap:5px}.inv-logo-line{width:18px;height:32px;border-left:4px solid #111;transform:skew(-18deg)}.inv-services small{font-weight:500;font-size:7px}.invoice-model-card{max-width:900px;width:min(92vw,900px);max-height:92vh;overflow:auto}.invoice-model-image{display:block;width:100%;height:auto;border-radius:10px;border:1px solid #ddd;margin:12px 0}.password-modal.open{display:flex}.muted{color:#7a8491;font-size:12px}.inv-contact em{font-size:8px}.qr-placeholder{position:relative;overflow:hidden;background:repeating-conic-gradient(#111 0 8%,#fff 0 16%);background-size:12px 12px}.qr-placeholder span{background:#fff;padding:2px;font-size:8px}.inv-payment strong{border-top:1px dashed #777;padding-top:8px}

.hierarchy-note{margin-top:14px;padding:14px 16px;border:1px solid #dce5ef;border-radius:12px;background:#f7faff;color:#23344d;line-height:1.55}.hierarchy-fields{margin-top:12px}.hierarchy-fields label{display:block}.hierarchy-fields select{width:100%}

.datetime{display:flex;flex-direction:column;align-items:flex-end;line-height:1.15;min-width:150px}.datetime b{font-size:15px;color:#152235}.datetime span{font-size:11px;color:#718096;text-transform:capitalize}.objective-panel{min-height:250px}.objective-wrap{display:flex;align-items:center;justify-content:center;gap:28px;padding:16px 4px 4px}.objective-donut{width:150px;height:150px;border-radius:50%;background:conic-gradient(#1687ff 0 61%,#e8edf4 61% 100%);display:grid;place-items:center;position:relative;flex:0 0 auto}.objective-donut:after{content:"";position:absolute;width:108px;height:108px;border-radius:50%;background:#fff}.objective-donut>div{position:relative;z-index:1;text-align:center}.objective-donut strong{display:block;font-size:28px;color:#152235}.objective-donut small{display:block;color:#718096;font-size:11px}.objective-legend{display:grid;grid-template-columns:1fr 1fr;gap:12px 22px;min-width:210px}.objective-legend>div{display:grid;grid-template-columns:12px 1fr;column-gap:7px;align-items:center}.objective-legend .dot{width:10px;height:10px;border-radius:50%;grid-row:span 2;background:#1687ff}.objective-legend .d2{background:#5c6ac4}.objective-legend .d3{background:#19a974}.objective-legend .d4{background:#e7a23b}.objective-legend b{font-size:12px}.objective-legend small{grid-column:2;color:#718096;font-size:10px}@media(max-width:720px){.header-actions{gap:7px}.datetime{min-width:0;align-items:flex-start}.datetime b{font-size:13px}.datetime span{font-size:9px;max-width:110px}.objective-wrap{flex-direction:column}.objective-legend{width:100%;min-width:0}}

/* IMMOXIA v15 — administration et caméra */
.admin-data-panel{margin-top:18px}.danger-btn{border:1px solid #e7bcbc;background:#fff4f4;color:#b42318;border-radius:9px;padding:11px 14px;font-weight:700;cursor:pointer}.small-action{border:1px solid #efc8c8;background:#fff7f7;color:#b42318;border-radius:7px;padding:7px 9px;font-size:11px;cursor:pointer}.account-delete-card{max-width:520px}.delete-options{display:grid;gap:9px;margin-top:18px}.delete-options button{width:100%}.camera-panel{border:1px solid #dce5ef;border-radius:14px;padding:14px;background:#f8fafc}.camera-preview-wrap{position:relative;width:100%;max-width:760px;aspect-ratio:16/9;margin:auto;border-radius:12px;overflow:hidden;background:#101923}.camera-preview-wrap video{display:none;width:100%;height:100%;object-fit:cover}.camera-placeholder{height:100%;display:grid;place-items:center;color:#b8c7d7;font-size:18px}.camera-actions{display:flex;flex-wrap:wrap;gap:9px;margin-top:12px}.camera-canvas{display:none}.camera-photos{display:grid;grid-template-columns:repeat(4,1fr);gap:9px;margin-top:12px}.camera-thumb{position:relative;aspect-ratio:1;border-radius:10px;overflow:hidden;background:#e9eef4}.camera-thumb img{width:100%;height:100%;object-fit:cover}.camera-thumb button{position:absolute;top:5px;right:5px;border:0;border-radius:50%;width:28px;height:28px;background:rgba(0,0,0,.72);color:#fff;font-size:18px;cursor:pointer}.camera-panel .upload{margin-top:12px}@media(max-width:720px){.camera-actions{display:grid;grid-template-columns:1fr}.camera-photos{grid-template-columns:repeat(2,1fr)}.admin-data-panel{margin-bottom:20px}}

.admin-only-view.active{display:block}.modal{position:fixed;inset:0;background:rgba(2,11,27,.78);backdrop-filter:blur(8px);z-index:10002;display:none;align-items:center;justify-content:center;padding:20px}.modal.open{display:flex}.modal-card{width:min(500px,94vw);background:#fff;border-radius:18px;padding:26px;box-shadow:0 20px 60px rgba(0,0,0,.3);position:relative}.modal-card h2{margin:7px 0 10px}.modal-close{position:absolute;right:12px;top:10px;width:38px;height:38px;border-radius:50%;background:#eef3f8;color:#31455e;font-size:24px}.validation-item{display:flex;align-items:center;justify-content:space-between;gap:18px}.small-action{padding:8px 10px;border-radius:8px}.danger{color:#c63b3b;border:1px solid #f0caca;background:#fff}.objective-actions{justify-content:flex-start}@media(max-width:720px){.validation-item{align-items:flex-start;flex-direction:column}.validation-item .form-actions{width:100%;justify-content:flex-start}.modal-card{padding:22px 18px}}
.chrono-id{padding:14px 16px;border:1px solid #dbe5f0;border-radius:14px;background:#f7faff;margin:12px 0 20px;font-size:15px}.chrono-id span:first-of-type{font-family:monospace;font-size:17px;margin:0 10px;color:#0b4a86}.chrono-head{display:flex;justify-content:space-between;gap:20px;align-items:flex-start;border-bottom:1px solid #e5eaf0;padding-bottom:18px;margin-bottom:10px}.chrono-list{max-width:900px}.chrono-item{display:flex;gap:14px;padding:14px 4px;border-bottom:1px solid #edf1f5}.chrono-marker{font-size:20px;width:32px}.chrono-body b{display:block}.chrono-body small{display:block;color:#68778a;margin-top:4px}.chrono-body p{margin:7px 0;color:#39495a}.blue{background:#e8f3ff;color:#1262a3}.hierarchy-fields small{grid-column:1/-1}.actions{display:flex;flex-wrap:wrap;gap:7px;margin-top:12px}.actions button{font-size:12px;padding:7px 9px}.property .ref{font-family:monospace}

/* Facture v22 — modèle basé sur la facture fournie */
.inv-head-image{width:100%;overflow:hidden;margin-bottom:6px;border-bottom:1px dashed #555;padding-bottom:8px}.inv-head-image img{display:block;width:100%;height:auto;max-height:190px;object-fit:contain}.invoice-paper{font-family:Arial,sans-serif;background:#fff;color:#15191f}.invoice-paper .inv-title{font-weight:900;font-size:24px;letter-spacing:4px}.invoice-paper .inv-info{font-size:9px}.invoice-paper .inv-table{font-size:8.5px}.invoice-paper .inv-table th{background:#111820}.invoice-paper .inv-totals .grand{background:#111820}.invoice-paper .inv-contact{font-size:8.5px}.invoice-paper .inv-thanks b{letter-spacing:3px}.invoice-paper input[readonly]{background:#f5f7fa;color:#34455b;font-weight:700}@media print{.inv-head-image img{max-height:none}.invoice-paper{width:80mm;max-width:80mm}}

/* IMMOXIA v23 — interface compacte type SaaS + profil agent */
.platform-topbar{height:74px;margin:-28px -38px 18px;padding:0 28px;background:linear-gradient(100deg,#071426,#0b2340);color:#fff;display:flex;align-items:center;gap:28px;position:relative;z-index:3;box-shadow:0 8px 24px rgba(7,20,38,.12)}
.topbar-brand{display:flex;align-items:center;gap:10px;min-width:205px}.topbar-brand b{font-size:21px;letter-spacing:1px}.topbar-brand small{display:block;color:#9eb1c8;font-size:9px;margin-top:2px}.topbar-logo{width:42px;height:42px;border:2px solid #1687ff;color:#fff;display:grid;place-items:center;font-weight:900;font-size:22px;transform:skew(-8deg)}
.topbar-search{height:44px;flex:1;max-width:620px;background:#183858;border:1px solid #274b70;border-radius:24px;display:flex;align-items:center;padding:0 16px;color:#d9e6f3;font-size:24px}.topbar-search input{background:transparent;border:0;outline:0;color:#fff;width:100%;font-size:13px;padding:0 8px}.topbar-search input::placeholder{color:#a9bdd1}
.topbar-icon{position:relative;width:42px;height:42px;border-radius:50%;background:transparent;color:#fff;font-size:22px}.topbar-icon i{position:absolute;right:7px;top:6px;width:7px;height:7px;border-radius:50%;background:#ff5757;border:2px solid #071426}
.topbar-profile{display:flex;align-items:center;gap:10px;min-width:175px}.profile-avatar{overflow:hidden;flex:0 0 auto}.profile-avatar img{width:100%;height:100%;object-fit:cover;display:block}.profile-copy{display:flex;flex-direction:column;line-height:1.15;min-width:92px}.profile-copy b{font-size:13px;color:#fff}.profile-copy small{font-size:11px;color:#a9bdd1;margin-top:4px}.profile-chevron{color:#b7c9da;font-size:18px;margin-left:auto}
.sidebar{padding-top:18px}.side-footer{font-size:10px;line-height:1.45}.side-footer span{font-size:11px}
main{padding-top:28px}
.view.active{animation:immoxiaIn .18s ease-out}@keyframes immoxiaIn{from{opacity:.6;transform:translateY(3px)}to{opacity:1;transform:none}}
.commission-page{padding-bottom:30px}.commission-hero{background:#fff;border:1px solid #e2e9f2;border-radius:15px;padding:18px 20px;display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:16px;box-shadow:0 4px 18px rgba(7,20,38,.035)}.commission-title{display:flex;align-items:center;gap:14px}.commission-icon{width:58px;height:58px;border-radius:16px;background:#eaf4ff;color:#0872d9;display:grid;place-items:center;font-size:27px}.commission-title h2{font-size:28px;margin:3px 0}.commission-title p{margin:0;color:#718096;font-size:13px}.commission-clock{display:flex;flex-direction:column;align-items:flex-end;line-height:1.25}.commission-clock b{font-size:15px}.commission-clock span{font-size:11px;color:#718096;text-transform:capitalize}
.commission-kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:16px}.commission-card{background:#fff;border:1px solid #dfe8f2;border-radius:15px;padding:18px;min-height:128px;box-shadow:0 4px 16px rgba(7,20,38,.025)}.commission-card span{display:block;color:#536a82;font-size:12px}.commission-card strong{display:block;font-size:23px;margin:13px 0 9px;color:#10233b}.commission-card em{font-style:normal;color:#16a071;font-size:11px}.commission-card:nth-child(2) em{color:#d78b17}.commission-card:nth-child(3) em{color:#12a47c}.objective-progress{height:8px;border-radius:20px;background:#e5edf7;margin:9px 0 6px;overflow:hidden}.objective-progress i{display:block;height:100%;background:#1687ff;border-radius:20px}
.commission-panel{background:#fff;border:1px solid #dfe8f2;border-radius:15px;padding:18px;box-shadow:0 4px 18px rgba(7,20,38,.035)}.commission-tabs{display:flex;align-items:center;gap:12px;border-bottom:1px solid #e8eef5;padding-bottom:10px;margin-bottom:8px}.commission-tab{background:transparent;color:#61758b;padding:9px 12px;font-weight:700;border-bottom:3px solid transparent}.commission-tab.active{color:#1687ff;border-color:#1687ff}.commission-filter{margin-left:auto;background:#fff;border:1px solid #dce5ef;border-radius:9px;padding:9px 12px;color:#51667d}.commission-table{margin-top:0}.commission-table th,.commission-table td{padding:13px 9px}.commission-table td small{display:block;color:#788ba0;margin-top:4px;font-size:10px}.commission-table td b{color:#0872d9;font-size:12px}.commission-note{margin-top:13px;background:#f2f7fd;border-radius:10px;padding:11px 13px;color:#688099;font-size:11px}
@media(max-width:1100px){.commission-kpis{grid-template-columns:repeat(2,1fr)}.platform-topbar{gap:14px}.topbar-brand{min-width:170px}.topbar-search{max-width:none}}
@media(max-width:720px){.platform-topbar{height:auto;min-height:64px;margin:-20px -20px 14px;padding:10px 14px;gap:10px;flex-wrap:wrap}.topbar-brand{min-width:auto;flex:1}.topbar-brand b{font-size:17px}.topbar-brand small{font-size:8px}.topbar-logo{width:36px;height:36px;font-size:19px}.topbar-search{order:3;flex-basis:100%;height:38px}.topbar-profile{min-width:auto}.profile-copy{display:none}.profile-chevron{display:none}.topbar-icon{width:34px;height:34px}.commission-hero{align-items:flex-start}.commission-title h2{font-size:23px}.commission-clock{display:none}.commission-kpis{grid-template-columns:1fr}.commission-tabs{overflow:auto}.commission-tab{white-space:nowrap}.commission-filter{display:none}.commission-panel{padding:12px;overflow:auto}.commission-table{min-width:760px}.commission-card{min-height:105px}main{padding-top:20px}}
.user-table-avatar{width:38px;height:38px;border-radius:50%;object-fit:cover;display:inline-flex;align-items:center;justify-content:center;background:#dcecff;color:#0b4f9c;font-weight:800;border:2px solid rgba(22,135,255,.18)}
.user-table-avatar.fallback{font-size:12px}
#newPhoto{padding:.45rem}

.photo-security-box{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:12px 0}.photo-security-box>div{padding:12px;border-radius:12px;border:1px solid #dfe6ef;background:#f8fafc}.photo-security-box b{display:block;font-size:12px}.photo-security-box small{display:block;color:#687386;margin-top:4px}.photo-publication-actions{display:flex;gap:10px;flex-wrap:wrap;margin:10px 0}.publication-photo-thumb{position:relative}.publication-photo-thumb img{width:110px;height:82px;object-fit:cover;border-radius:10px;border:1px solid #dbe2ec}.photo-badge{display:inline-block;font-size:10px;font-weight:800;padding:3px 6px;border-radius:8px;margin-top:4px;background:#e8f8ef;color:#167548}@media(max-width:700px){.photo-security-box{grid-template-columns:1fr}.photo-publication-actions{flex-direction:column}.photo-publication-actions button{width:100%}}

/* IMMOXIA v29 — profil, déconnexion et contrats */
.topbar-profile-wrap{position:relative}.topbar-profile{border:0;background:transparent;color:#fff;cursor:pointer;padding:4px 0;text-align:left}.topbar-profile:focus-visible{outline:2px solid #4aa3ff;border-radius:10px}.profile-menu{position:absolute;right:0;top:calc(100% + 10px);width:260px;background:#fff;color:#142238;border:1px solid #dce5ef;border-radius:16px;box-shadow:0 18px 45px rgba(7,20,38,.2);padding:10px;display:none;z-index:10010}.profile-menu.open{display:block}.profile-menu-head{display:flex;gap:10px;align-items:center;padding:10px;border-bottom:1px solid #edf1f5;margin-bottom:6px}.profile-menu-head b,.profile-menu-head small{display:block}.profile-menu-head small{font-size:10px;color:#718096;margin-top:3px}.profile-menu button{display:block;width:100%;text-align:left;background:transparent;border:0;padding:11px 12px;border-radius:10px;cursor:pointer;color:#24364d}.profile-menu button:hover{background:#f2f6fb}.profile-menu .logout-menu{color:#b42318;font-weight:700}.pc-logo-image{width:100%;max-width:520px;height:92px;object-fit:contain;object-position:left center;display:block;margin:0 auto 12px;border-bottom:3px solid #071426;padding-bottom:8px}.pc-logo-image + .pc-title{margin-top:14px}.profile-edit-card{width:min(760px,94vw)}.profile-edit-card .form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.profile-edit-card input,.profile-edit-card select{width:100%;box-sizing:border-box}@media(max-width:720px){.profile-menu{right:-8px;width:240px}.profile-edit-card .form-grid{grid-template-columns:1fr}.profile-edit-card{padding:22px 18px}}


/* ===== IMMOXIA v31 — Contrat final fourni ===== */
.contract-final-hero{display:flex;justify-content:space-between;align-items:center;gap:18px}.contract-final-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}.contract-final-layout{display:grid;grid-template-columns:minmax(360px,.8fr) minmax(0,1.2fr);gap:18px;align-items:start}.contract-final-form{position:sticky;top:12px;max-height:calc(100vh - 90px);overflow:auto}.contract-final-form .section{margin-top:18px}.uc-formulas{display:grid;gap:8px}.uc-formulas label{padding:10px 12px;border:1px solid #e2e7ef;border-radius:10px;background:#f8fafc}.contract-final-preview-wrap{min-width:0;background:#e9edf3;padding:14px;border-radius:16px}.uc-page{width:210mm;min-height:297mm;background:#fff;position:relative;overflow:hidden;padding:20mm 22mm 18mm 22mm;margin:0 auto 14px;font-family:Arial,Helvetica,sans-serif;color:#111;font-size:10.6pt;line-height:1.25;box-shadow:0 8px 30px rgba(15,30,55,.12)}.uc-page:last-child{margin-bottom:0}.uc-header{height:24mm;position:relative;text-align:center}.uc-header img{width:29mm;height:25mm;object-fit:contain;display:block;margin:0 auto}.uc-gold-line{position:absolute;left:0;right:0;bottom:2mm;height:.45mm;background:#d9a51d}.uc-watermark{position:absolute;left:50%;top:115mm;transform:translate(-50%,-50%);width:105mm;height:105mm;background:url('./assets/contrat-pivot-services-logo.png') center/contain no-repeat;opacity:.10;z-index:0}.uc-page>*:not(.uc-watermark){position:relative;z-index:1}.uc-page h1{font-size:15.5pt;line-height:1.12;text-align:center;color:#183d73;margin:17mm 0 2mm;font-weight:800}.uc-page .uc-sign-title{margin-top:38mm}.uc-page h2{font-size:11.5pt;color:#183d73;margin:4.5mm 0 1.7mm;font-weight:800}.uc-page p{margin:0 0 2.3mm;text-align:justify}.uc-ref{text-align:center;font-size:10pt;margin-bottom:5mm}.uc-table{width:100%;border-collapse:collapse;margin:4mm 0 6mm;font-size:9.4pt}.uc-table th{background:#183d73;color:#fff;padding:2.2mm 1.8mm;border:1px solid #aeb8c5}.uc-table td{border:1px solid #aeb8c5;padding:1.8mm 1.8mm;text-align:center}.uc-table tbody tr:nth-child(even){background:#f2f5f9}.choice-box{font-weight:900;font-size:12pt}.uc-fill-lines{margin:1mm 0 3mm}.uc-fill-lines div{margin:1.5mm 0}.uc-financial{border:1px solid #183d73;background:#f6f8fb;text-align:center;padding:3mm 4mm;margin-top:6mm}.uc-sign-table{width:100%;border-collapse:collapse;margin-top:6mm;font-size:9.6pt}.uc-sign-table th{background:#183d73;color:#fff;border:1px solid #b9c3d0;padding:3mm}.uc-sign-table td{border:1px solid #b9c3d0;vertical-align:top;padding:8mm 5mm;height:48mm;text-align:center}.uc-coords{text-align:center;margin-top:18mm}.uc-footer{position:absolute;bottom:8mm;left:0;right:0;text-align:center;color:#777;font-size:8.5pt}@media(max-width:1200px){.contract-final-layout{grid-template-columns:1fr}.contract-final-form{position:static;max-height:none}.contract-final-preview-wrap{overflow:auto}.uc-page{margin-left:0;margin-right:0}}@media(max-width:700px){.contract-final-hero{align-items:flex-start;flex-direction:column}.contract-final-actions{justify-content:flex-start}.contract-final-preview-wrap{padding:6px}.uc-page{transform-origin:top left;width:210mm}}
@media print{.contract-final-layout{display:block}.contract-final-form,.contract-final-hero,.sidebar,header,.mobile-bar{display:none!important}.contract-final-preview-wrap{padding:0;background:#fff}.uc-page{box-shadow:none;margin:0;width:210mm;height:297mm;min-height:297mm}}
.reservation-card{border:1px solid #e3e8ef;border-radius:14px;padding:14px;margin-top:12px;background:#fff}.reservation-card .actions{display:flex;gap:7px;flex-wrap:wrap;margin-top:10px}.reservation-meta{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin-top:10px;font-size:13px}.reservation-toolbar{margin-bottom:12px}@media(max-width:800px){.reservation-meta{grid-template-columns:1fr 1fr}.reservation-card .actions button{flex:1 1 45%}}
