@import "https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Manrope:wght@600;700;800&display=swap";:root{color:#17333b;font-synthesis:none;--navy:#0b303c;--navy2:#164958;--teal:#16a79e;--teal2:#0b827b;--paper:#fff;--bg:#edf2f1;--line:#d8e2df;--muted:#697b80;--amber:#e9a23b;--red:#d85b58;--ease:cubic-bezier(.23,1,.32,1);background:#edf2f1;font-family:DM Sans,sans-serif}*{box-sizing:border-box}body{min-width:320px;min-height:100vh;margin:0}button,input,select{font:inherit}button,a{transition:transform .16s var(--ease),background .18s var(--ease),border .18s var(--ease),color .18s var(--ease)}button:active{transform:scale(.97)}a{color:inherit;text-decoration:none}h1,h2{letter-spacing:-.035em;margin:0;font-family:Manrope,sans-serif}h1{font-size:clamp(2rem,4vw,3.25rem);line-height:1.05}h2{font-size:1.2rem}.eyebrow{text-transform:uppercase;letter-spacing:.13em;color:var(--teal2);font-size:.7rem;font-weight:800}.primary,.secondary{cursor:pointer;border-radius:.65rem;justify-content:center;align-items:center;gap:.5rem;padding:.72rem 1rem;font-weight:700;display:inline-flex}.primary{border:1px solid var(--teal);background:var(--teal);color:#fff;box-shadow:0 7px 18px #16a79e33}.primary:hover{background:var(--teal2)}.secondary{border:1px solid var(--line);color:var(--navy);background:#fff}.secondary:hover{border-color:var(--teal);color:var(--teal2)}button:disabled{opacity:.5;cursor:not-allowed}.app-shell{grid-template-columns:255px 1fr;min-height:100vh;display:grid}.sidebar{background:var(--navy);color:#dce8e6;flex-direction:column;height:100vh;padding:1.4rem;display:flex;position:sticky;top:0}.brand{align-items:center;gap:.7rem;display:flex}.brand-mark{background:var(--teal);color:#fff;border-radius:12px;place-items:center;width:40px;height:40px;display:grid}.brand strong{font:800 1.2rem Manrope;display:block}.brand small{color:#8fb0b5;margin-top:.12rem;font-size:.72rem;display:block}.sidebar nav{flex-direction:column;gap:.3rem;margin-top:3rem;display:flex}.sidebar nav a{color:#9db7bb;border-radius:.65rem;align-items:center;gap:.7rem;padding:.8rem .85rem;font-weight:600;display:flex}.sidebar nav a:hover,.sidebar nav a.active{color:#fff;background:#ffffff10}.sidebar nav a.active{box-shadow:inset 3px 0 var(--teal)}.sidebar-user{border-top:1px solid #ffffff1b;align-items:center;gap:.65rem;margin-top:auto;padding-top:1rem;display:flex}.avatar{color:#fff;background:#286171;border-radius:50%;flex:0 0 38px;place-items:center;height:38px;font-size:.75rem;font-weight:800;display:grid}.avatar.light{color:var(--teal2);background:#dcecea}.user-copy{flex:1;min-width:0}.user-copy strong,.user-copy small{white-space:nowrap;text-overflow:ellipsis;display:block;overflow:hidden}.user-copy small{color:#8fb0b5;font-size:.7rem}.icon-button{cursor:pointer;background:0 0;border:0;border-radius:.5rem;place-items:center;width:34px;height:34px;display:grid}.icon-button.dark{color:#98b3b8}.icon-button:hover{color:#fff;background:#ffffff12}.main{min-width:0}.page-wrap{max-width:1440px;margin:auto;padding:2.2rem 2.5rem 5rem}.page-header{justify-content:space-between;align-items:flex-start;gap:2rem;margin-bottom:2rem;display:flex}.page-header h1{margin:.35rem 0}.page-header p,.project-header p{color:var(--muted);margin:.55rem 0}.hero-icon{width:56px;height:56px;color:var(--teal)}.panel{background:#fff;border:1px solid #dce6e3;border-radius:1rem;padding:1.4rem;box-shadow:0 10px 35px #153d4510}.panel-heading{justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:1.2rem;display:flex}.panel-heading h2{margin-top:.2rem}.heading-icon{color:var(--teal)}.toolbar{color:var(--muted);justify-content:space-between;align-items:center;margin-bottom:1.2rem;font-size:.85rem;display:flex}.search{border:1px solid var(--line);background:#fff;border-radius:.65rem;align-items:center;gap:.5rem;width:min(420px,100%);padding:.65rem .8rem;display:flex}.search input{background:0 0;border:0;outline:0;width:100%}.project-grid{grid-template-columns:repeat(auto-fill,minmax(270px,1fr));gap:1rem;display:grid}.project-card{background:#fff;border:1px solid #dce6e3;border-radius:1rem;padding:1.25rem;display:block;box-shadow:0 9px 25px #153d450c}.project-card:hover{border-color:#a8d5cf;transform:translateY(-3px);box-shadow:0 15px 40px #153d4518}.project-card-top{justify-content:space-between;align-items:center;display:flex}.project-icon{width:44px;height:44px;color:var(--teal2);background:#e3f5f2;border-radius:.8rem;place-items:center;display:grid}.project-card h2{margin:1.2rem 0 .2rem;font-size:1.35rem}.project-card p{margin:.2rem 0;font-weight:700}.project-card small{color:var(--muted)}.project-footer{color:var(--muted);border-top:1px solid #edf2f0;justify-content:space-between;align-items:center;margin-top:1.25rem;padding-top:.9rem;display:flex}.project-footer span{align-items:center;gap:.35rem;display:flex}.status{color:#52666b;text-transform:uppercase;letter-spacing:.05em;background:#e9eeed;border-radius:999px;padding:.28rem .55rem;font-size:.7rem;font-weight:800;display:inline-flex}.status-valide,.status-rapport_genere{color:#1c7448;background:#dff4e8}.status-echec{color:#9a312f;background:#fbe6e5}.status-reconstruction{color:#4057a4;background:#e8ecfb}.status-a_annoter,.status-a_valider{color:#916116;background:#fff0d8}.status-controle_qualite{color:#146c65;background:#def3f1}.empty-state{text-align:center;color:var(--muted);grid-column:1/-1;padding:5rem}.empty-state svg{width:52px;height:52px}.create-project{background:#dfecea;border-radius:1rem;grid-template-columns:repeat(4,1fr) auto;align-items:end;gap:.8rem;margin-bottom:1.3rem;padding:1rem;display:grid}.create-project label,.admin-form label,.login-card label{gap:.35rem;font-size:.78rem;font-weight:700;display:grid}.create-project input,.create-project select,.admin-form input,.admin-form select,.login-card input{background:#fff;border:1px solid #cddbd8;border-radius:.55rem;outline:0;width:100%;padding:.72rem}.create-project input:focus,.admin-form input:focus,.login-card input:focus{border-color:var(--teal);box-shadow:0 0 0 3px #16a79e20}.login-page{grid-template-columns:1.12fr .88fr;min-height:100vh;display:grid}.login-story{color:#fff;background:radial-gradient(circle at 15% 80%,#1b5965 0,#0000 35%),linear-gradient(145deg,#0a2933,#0d3c49 58%,#0d5860);flex-direction:column;padding:3rem 4rem;display:flex;position:relative;overflow:hidden}.login-story:after{content:"";border:1px solid #ffffff18;border-radius:50%;width:500px;height:500px;position:absolute;bottom:-140px;right:-100px;box-shadow:0 0 0 80px #ffffff06,0 0 0 160px #ffffff05}.brand.large{z-index:1;position:relative}.story-copy{z-index:1;max-width:680px;margin:auto 0;position:relative}.story-copy .eyebrow{color:#78ddd4}.story-copy h1{margin:1rem 0;font-size:clamp(2.8rem,5vw,5.4rem)}.story-copy h1 em{color:#71d8cf;font-style:normal}.story-copy p{color:#b8ced1;max-width:570px;font-size:1.15rem;line-height:1.7}.trust{z-index:1;color:#a9c7ca;align-items:center;gap:.65rem;font-size:.82rem;display:flex;position:relative}.login-panel{background:#f7faf9;place-items:center;padding:2rem;display:grid}.login-card{border:1px solid var(--line);background:#fff;border-radius:1.2rem;width:min(430px,100%);padding:2.2rem;box-shadow:0 30px 80px #193e4520}.login-icon{width:48px;height:48px;color:var(--teal2);background:#e0f4f1;border-radius:.8rem;place-items:center;margin-bottom:1rem;display:grid}.login-card h2{margin:.35rem 0;font-size:1.8rem}.login-card p{color:var(--muted);margin:0 0 1.5rem}.login-card label{margin-top:1rem}.large-button{width:100%;margin-top:1.5rem;padding:.9rem}.project-header{justify-content:space-between;align-items:flex-start;margin:1rem 0 1.5rem;display:flex}.back-link{color:var(--muted);align-items:center;gap:.4rem;font-size:.85rem;display:inline-flex}.workflow-strip{background:var(--navy);color:#a8c0c3;border-radius:1rem;grid-template-columns:repeat(4,1fr);margin-bottom:1rem;display:grid;overflow:hidden}.workflow-step{border-right:1px solid #ffffff12;justify-content:center;align-items:center;gap:.55rem;padding:1rem;display:flex}.workflow-step:last-child{border-right:0}.workflow-step span{border:1px solid;border-radius:50%;place-items:center;width:24px;height:24px;font-size:.7rem;display:grid}.workflow-step.done{color:#fff;background:#124552}.workflow-step.done span{background:var(--teal);border-color:var(--teal)}.two-column{grid-template-columns:1fr 1fr;gap:1rem;margin-bottom:1rem;display:grid}.dropzone{text-align:center;min-height:260px;color:var(--muted);cursor:pointer;background:#f5faf9;border:2px dashed #b9d2ce;border-radius:.8rem;flex-direction:column;justify-content:center;align-items:center;gap:.7rem;padding:2rem;display:flex}.dropzone strong{color:var(--navy);font-size:1.02rem}.dropzone.dragging{border-color:var(--teal);background:#e7f7f5}.metrics-grid{grid-template-columns:1fr 1fr;gap:.7rem;display:grid}.metric-card{background:#f3f7f6;border-radius:.7rem;align-items:flex-start;gap:.7rem;padding:.8rem;display:flex}.metric-icon{color:var(--teal2)}.metric-icon svg{width:20px}.metric-card span,.metric-card strong,.metric-card small{display:block}.metric-card>div>span{color:var(--muted);font-size:.7rem}.metric-card strong{font-size:1.1rem}.metric-card small{color:#87979a;font-size:.67rem}.quality-grade{background:var(--teal);color:#fff;border-radius:50%;place-items:center;width:45px;height:45px;font:800 1.2rem Manrope;display:grid}.grade-c,.grade-d{background:var(--amber)}.readiness{border-radius:.7rem;align-items:center;gap:.7rem;margin-top:.9rem;padding:.8rem;display:flex}.readiness div span,.readiness div strong{display:block}.readiness div span{font-size:.7rem}.readiness.ready{color:#216c4c;background:#e2f5eb}.readiness.blocked{color:#855c1c;background:#fff0dc}.warnings{margin-top:.7rem}.warnings>strong{font-size:.75rem}.warnings p{color:#8c6422;align-items:center;gap:.4rem;margin:.35rem 0;font-size:.75rem;display:flex}.processing-panel{margin-bottom:1rem}.job-row{grid-template-columns:minmax(190px,1fr) 2fr 50px;align-items:center;gap:1rem;display:grid}.job-row strong,.job-row span{display:block}.job-row span{color:var(--muted);font-size:.7rem}.progress{background:#e6ecea;border-radius:999px;height:9px;overflow:hidden}.progress span{background:var(--teal);border-radius:inherit;height:100%}.spin{animation:1s linear infinite spin}@keyframes spin{to{transform:rotate(1turn)}}.action-row{border-top:1px solid #edf2f0;align-items:center;gap:1rem;margin-top:1rem;padding-top:1rem;display:flex}.action-row span,.muted{color:var(--muted);font-size:.78rem}.asset-list>div,.user-list>div{border-bottom:1px solid #edf2f0;grid-template-columns:auto 1fr auto auto;align-items:center;gap:.7rem;padding:.65rem 0;display:grid}.asset-list small,.user-list small{color:var(--muted)}.asset-list b{font-size:.67rem}.ok{color:#27845a}.warn{color:#a87524}.user-list span b,.user-list span small{display:block}.user-list em{text-transform:uppercase;font-size:.7rem;font-style:normal}.user-list i{font-size:.7rem;font-style:normal}.online{color:#268353}.offline{color:#a84442}.admin-form{gap:.9rem;display:grid}.admin-form .panel-heading{margin-bottom:.2rem}.admin-form label small{color:var(--muted);font-weight:400}.settings-grid{grid-template-columns:repeat(2,1fr);gap:1rem;display:grid}.setting-card>svg{color:var(--teal);width:30px;height:30px}.setting-card h2{margin:.8rem 0 .4rem}.setting-card p{min-height:48px;color:var(--muted)}.app-loader{min-height:100vh;color:var(--muted);place-items:center;display:grid}.editor-page{color:#dce7e6;background:#101c21;min-height:100vh}.editor-header{background:#0b303c;border-bottom:1px solid #ffffff13;align-items:center;gap:1.2rem;height:72px;padding:0 1.2rem;display:flex}.editor-header>a{color:#9eb6b9;align-items:center;gap:.4rem;display:flex}.editor-header>div:nth-child(2){margin-right:auto}.editor-header>div:nth-child(2) strong,.editor-header>div:nth-child(2) span{display:block}.editor-header>div:nth-child(2) span{color:#8ea9ad;font-size:.7rem}.editor-actions{gap:.5rem;display:flex}.editor-actions button{padding:.55rem .7rem;font-size:.75rem}.editor-actions button svg{width:15px}.editor-layout{grid-template-columns:260px minmax(0,1fr) 280px;height:calc(100vh - 72px);display:grid}.toolbox,.metrics-sidebar{background:#102b34;padding:1.3rem;overflow:auto}.toolbox h2,.metrics-sidebar h2{margin:.25rem 0 .5rem}.toolbox p{color:#93aaad;font-size:.78rem;line-height:1.5}.toolbox>button{color:#b8cbcd;text-align:left;cursor:pointer;background:#ffffff06;border:1px solid #ffffff13;border-radius:.55rem;align-items:center;gap:.55rem;width:100%;margin:.35rem 0;padding:.65rem;display:flex}.toolbox>button svg{width:17px}.toolbox>button.active{border-color:var(--teal);color:#fff;background:#16a79e26}.draft-box{background:#091f27;border-radius:.7rem;gap:.35rem;margin-top:1rem;padding:1rem;display:grid}.draft-box span{color:#8ca7aa;font-size:.68rem}.draft-box button{margin-top:.5rem}.shape-list{margin-top:1rem}.shape-list>div{border-bottom:1px solid #ffffff0e;grid-template-columns:auto 1fr;gap:.1rem .45rem;padding:.55rem 0;font-size:.75rem;display:grid}.shape-list small{color:#80999c;grid-column:2}.swatch{background:#899;border-radius:50%;width:10px;height:10px}.swatch.teal{background:var(--teal)}.swatch.faitage{background:#ef675f}.swatch.rive{background:#61b5ca}.swatch.egout{background:#5f8fe9}.swatch.aretier{background:#efb053}.swatch.noue{background:#aa80e0}.map-workspace{background-color:#0a1418;background-image:linear-gradient(#ffffff06 1px,#0000 1px),linear-gradient(90deg,#ffffff06 1px,#0000 1px);background-position:0 0;background-repeat:repeat;background-size:30px 30px;background-attachment:scroll;background-origin:padding-box;background-clip:border-box;place-items:center;min-width:0;padding:1.4rem;display:grid;position:relative;overflow:auto}.orthophoto{cursor:crosshair;max-width:100%;line-height:0;position:relative;box-shadow:0 18px 60px #0008}.orthophoto img{-webkit-user-select:none;user-select:none;max-width:100%;max-height:calc(100vh - 145px);display:block}.orthophoto svg{width:100%;height:100%;position:absolute;inset:0;overflow:visible}.roof-plane{fill:#19c1b344;stroke:#5ce1d5;stroke-width:3px;vector-effect:non-scaling-stroke}.roof-line,.draft-line{fill:none;stroke:#fff;stroke-width:4px;vector-effect:non-scaling-stroke}.roof-line.faitage{stroke:#ef675f}.roof-line.rive{stroke:#61b5ca}.roof-line.egout{stroke:#5f8fe9}.roof-line.aretier{stroke:#efb053}.roof-line.noue{stroke:#aa80e0}.draft-line{stroke:#fff;stroke-dasharray:8 6}.draft-point{fill:#fff;stroke:var(--teal);stroke-width:3px;vector-effect:non-scaling-stroke}.map-status{color:#91a7aa;justify-content:space-between;font-size:.68rem;display:flex;position:absolute;bottom:.5rem;left:1.4rem;right:1.4rem}.no-map{text-align:center;color:#91a7aa;max-width:450px}.no-map svg{width:50px;height:50px}.no-map h2{color:#e0ebea}.big-metric{background:#091f27;border-radius:.7rem;margin:1rem 0;padding:1rem}.big-metric span,.big-metric strong,.big-metric small{display:block}.big-metric span,.big-metric small{color:#8fa7aa;font-size:.7rem}.big-metric strong{color:#77ddd3;margin:.3rem 0;font:800 1.8rem Manrope}.mini-metrics>div{border-bottom:1px solid #ffffff0d;justify-content:space-between;padding:.7rem 0;font-size:.76rem;display:flex}.mini-metrics span{color:#8fa7aa;text-transform:capitalize}.uncertainty{color:#d6bb7e;border:1px solid #7c632d;border-radius:.6rem;margin-top:1rem;padding:.8rem;font-size:.7rem;line-height:1.5}.empty-metrics{text-align:center;color:#829a9d;margin-top:3rem;font-size:.78rem}.empty-metrics svg{width:38px;height:38px}.empty-panel{text-align:center;color:var(--muted);padding:3rem}.empty-panel h2{color:var(--navy)}@media (width<=1100px){.create-project{grid-template-columns:1fr 1fr}.editor-layout{grid-template-columns:220px 1fr}.metrics-sidebar,.editor-actions .secondary:first-child{display:none}}@media (width<=850px){.app-shell{grid-template-columns:1fr}.sidebar{flex-direction:row;align-items:center;height:auto;position:static}.sidebar nav{flex-direction:row;margin:0 0 0 auto}.sidebar-user{display:none}.two-column,.settings-grid,.login-page{grid-template-columns:1fr}.login-story{display:none}.editor-layout{grid-template-columns:1fr}.toolbox{display:none}.editor-header{overflow-x:auto}.workflow-strip{grid-template-columns:1fr 1fr}.page-wrap{padding:1.5rem}.project-header,.page-header{align-items:flex-start}}@media (width<=600px){.sidebar{padding:.8rem}.sidebar .brand div{display:none}.sidebar nav a{font-size:0}.sidebar nav a svg{width:20px}.create-project{grid-template-columns:1fr}.editor-actions button{font-size:0}.editor-actions button svg{margin:0}.page-header{display:block}.page-header .primary{margin-top:1rem}.metrics-grid{grid-template-columns:1fr}}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}.scale-control{background:#0a222a;border:1px solid #ffffff13;border-radius:.7rem;gap:.45rem;margin-top:1rem;padding:1rem;display:grid}.scale-control span{color:#8fa7aa;font-size:.68rem;line-height:1.4}.scale-control select,.scale-control input{color:#dce7e6;background:#102f39;border:1px solid #ffffff18;border-radius:.45rem;width:100%;padding:.55rem}.map-zoom-controls{z-index:8;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#0b242dda;border:1px solid #ffffff1c;border-radius:.7rem;align-items:center;gap:.35rem;padding:.35rem;display:flex;position:absolute;top:1rem;right:1rem;box-shadow:0 8px 26px #0005}.map-zoom-controls button{color:#c8dcde;cursor:pointer;background:#ffffff0b;border:1px solid #0000;border-radius:.45rem;place-items:center;width:34px;height:34px;padding:0;transition:background .15s ease-out,transform .15s ease-out;display:grid}.map-zoom-controls button:hover:not(:disabled),.map-zoom-controls button.active{color:#fff;background:#16a79e38;border-color:#35c9bd66}.map-zoom-controls button:active:not(:disabled){transform:scale(.96)}.map-zoom-controls button:disabled{opacity:.35;cursor:not-allowed}.map-zoom-controls button svg{width:17px;height:17px}.map-zoom-controls strong{color:#d8e7e8;text-align:center;font-variant-numeric:tabular-nums;min-width:48px;font-size:.72rem}.orthophoto{transform-origin:50%;will-change:transform;transition:transform .16s cubic-bezier(.23,1,.32,1)}.orthophoto.pan-enabled{cursor:grab;touch-action:none}.orthophoto.pan-enabled.panning{cursor:grabbing;transition:none}.orthophoto.pan-enabled svg{pointer-events:none}
