@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}.roof-plane{fill:#19c1b326;stroke:#5ce1d5;stroke-width:1.75px}.roof-line,.draft-line{stroke-width:2px}.draft-line{stroke-width:1.5px;stroke-dasharray:5 4}.draft-point{fill:#fff;stroke:var(--teal);stroke-width:1.5px}.draft-crosshair{stroke:#fff;stroke-width:1px;vector-effect:non-scaling-stroke;paint-order:stroke;filter:drop-shadow(0 0 1px #06262a)}.view-mode-tabs{z-index:10;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#0b242de8;border:1px solid #ffffff1c;border-radius:.72rem;gap:.3rem;padding:.3rem;display:flex;position:absolute;top:1rem;left:1rem;box-shadow:0 8px 26px #0005}.view-mode-tabs button{color:#a9c0c2;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:.48rem;align-items:center;gap:.38rem;min-height:34px;padding:.48rem .72rem;font-size:.69rem;font-weight:700;display:flex}.view-mode-tabs button svg{width:15px;height:15px}.view-mode-tabs button:hover:not(:disabled),.view-mode-tabs button.active{color:#fff;background:#16a79e38;border-color:#35c9bd66}.view-mode-tabs button:disabled{opacity:.35;cursor:not-allowed}.model-3d-shell{background:#07161b;position:absolute;inset:0;overflow:hidden}.model-3d-mount,.model-3d-canvas{width:100%;height:100%;display:block}.model-3d-presets{z-index:9;background:#0b242de8;border:1px solid #ffffff1c;border-radius:.7rem;gap:.3rem;padding:.3rem;display:flex;position:absolute;top:1rem;right:1rem;box-shadow:0 8px 26px #0005}.model-3d-presets button{color:#c8dcde;cursor:pointer;background:#ffffff0b;border:1px solid #0000;border-radius:.45rem;padding:.5rem .68rem;font-size:.66rem;font-weight:700}.model-3d-presets button:hover{color:#fff;background:#16a79e38;border-color:#35c9bd66}.model-3d-message{color:#d7e7e8;text-align:center;background:#09242de8;border:1px solid #ffffff1c;border-radius:.8rem;gap:.4rem;min-width:260px;padding:1.2rem 1.4rem;display:grid;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.model-3d-message span{color:#8fa8aa;font-size:.7rem}.model-3d-message.error{border-color:#e66b6b66}.model-3d-help{color:#bbd0d2;white-space:nowrap;pointer-events:none;background:#061a21d9;border-radius:2rem;padding:.45rem .8rem;font-size:.65rem;position:absolute;bottom:2rem;left:50%;transform:translate(-50%)}@media (width<=700px){.view-mode-tabs button{font-size:0}.view-mode-tabs button svg{width:18px;height:18px}.model-3d-presets{flex-direction:column;top:auto;bottom:3.2rem;right:.7rem}.model-3d-help{white-space:normal;text-align:center;max-width:75%}}.measurement-layer{place-items:center;min-width:0;display:grid;position:absolute;inset:0;overflow:auto}.measurement-layer.inactive{visibility:hidden;pointer-events:none}.measurement-layer.active{visibility:visible;pointer-events:auto}.model-layer{overflow:hidden}.admin-dashboard{max-width:1540px}.admin-hero{align-items:center}.admin-stat-grid{grid-template-columns:repeat(4,1fr);gap:.85rem;margin-bottom:1rem;display:grid}.admin-stat-grid>div{background:#fff;border:1px solid #dce6e3;border-radius:.9rem;grid-template-columns:auto 1fr;align-items:center;gap:.1rem .7rem;padding:1rem 1.1rem;display:grid;box-shadow:0 8px 24px #153d450b}.admin-stat-grid svg{width:28px;height:28px;color:var(--teal2);background:#e2f4f1;border-radius:.55rem;grid-row:1/3;padding:.35rem}.admin-stat-grid span{color:var(--muted);font-size:.72rem}.admin-stat-grid strong{font:800 1.45rem Manrope}.admin-users-panel{padding:0;overflow:hidden}.admin-toolbar{border-bottom:1px solid var(--line);background:#f8fbfa;gap:.7rem;padding:1rem;display:flex}.admin-toolbar .search{margin-right:auto}.admin-toolbar select,.admin-control-group select,.password-reset-row input{border:1px solid var(--line);color:var(--navy);background:#fff;border-radius:.6rem;padding:.65rem .75rem}.admin-master-detail{grid-template-columns:minmax(520px,1.2fr) minmax(360px,.8fr);min-height:610px;display:grid}.admin-user-table{border-right:1px solid var(--line);background:#fbfdfc;padding:.6rem}.admin-user-table>button{width:100%;color:var(--navy);text-align:left;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:.75rem;grid-template-columns:auto minmax(0,1fr) auto auto;align-items:center;gap:.7rem;padding:.75rem;display:grid}.admin-user-table>button:hover{background:#eef7f5}.admin-user-table>button.selected{box-shadow:inset 3px 0 var(--teal);background:#e5f5f2;border-color:#9ed6d0}.admin-user-main b,.admin-user-main small{display:block}.admin-user-main small{color:var(--muted);margin-top:.12rem;font-size:.7rem}.user-state,.role-pill{border-radius:999px;padding:.25rem .48rem;font-size:.65rem;font-weight:800}.user-state.active{color:#1c7448;background:#dff4e8}.user-state.inactive{color:#9a312f;background:#fbe6e5}.user-state.locked{color:#916116;background:#fff0d8}.role-pill{color:#455e6a;text-transform:uppercase;background:#edf1f5}.admin-user-detail{padding:1.3rem;overflow:auto}.user-detail-head{border-bottom:1px solid var(--line);align-items:center;gap:.9rem;padding-bottom:1rem;display:flex}.large-avatar{background:var(--navy);flex-basis:52px;width:52px;height:52px}.user-detail-head p{color:var(--muted);margin:.15rem 0;font-size:.8rem}.user-facts{grid-template-columns:1fr 1fr;gap:.6rem;margin:1rem 0;display:grid}.user-facts>div{background:#f3f7f6;border-radius:.65rem;grid-template-columns:auto 1fr;gap:.15rem .45rem;padding:.7rem;display:grid}.user-facts svg{width:17px;color:var(--teal2);grid-row:1/3}.user-facts span{color:var(--muted);font-size:.64rem}.user-facts b{overflow-wrap:anywhere;font-size:.75rem}.admin-control-group{border-top:1px solid var(--line);gap:.65rem;padding:1rem 0;display:grid}.admin-control-group>p{color:var(--muted);margin:0;font-size:.72rem}.admin-control-group label{gap:.3rem;font-size:.72rem;font-weight:700;display:grid}.admin-action-pair,.password-reset-row{grid-template-columns:1fr 1fr;gap:.55rem;display:grid}.admin-action-pair button,.password-reset-row button,.admin-control-group .full{font-size:.72rem}.audit-timeline{border-top:1px solid var(--line);padding-top:1rem}.audit-timeline>div{grid-template-columns:12px 1fr;gap:.5rem;padding:.55rem 0;display:grid}.audit-timeline>div>span{border:2px solid var(--teal);background:#fff;border-radius:50%;width:9px;height:9px;margin-top:.2rem}.audit-timeline p,.audit-timeline b,.audit-timeline small{margin:0;display:block}.audit-timeline b{font-size:.72rem}.audit-timeline small{color:var(--muted);margin-top:.15rem;font-size:.64rem}.admin-empty{color:var(--muted);text-align:center;place-items:center;gap:.45rem;padding:4rem;display:grid}.admin-empty svg{width:38px;height:38px}.modal-backdrop{z-index:100;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#071a20b8;place-items:center;padding:1rem;display:grid;position:fixed;inset:0}.modal-card{border:1px solid var(--line);background:#fff;border-radius:1rem;width:min(540px,100%);max-height:calc(100vh - 2rem);padding:1.6rem;position:relative;overflow:auto;box-shadow:0 30px 90px #041c2866}.modal-card h2{margin:.3rem 0}.modal-card>p{color:var(--muted);line-height:1.5}.modal-close{width:34px;height:34px;color:var(--navy);cursor:pointer;background:#eef3f2;border:0;border-radius:.55rem;place-items:center;display:grid;position:absolute;top:.8rem;right:.8rem}.modal-close svg{width:17px}.admin-create-modal{gap:.8rem;display:grid}.admin-create-modal label,.deletion-modal label{gap:.35rem;font-size:.76rem;font-weight:700;display:grid}.admin-create-modal input,.admin-create-modal select,.deletion-modal input{border:1px solid #cddbd8;border-radius:.6rem;padding:.75rem}.admin-create-modal small{color:var(--muted);font-weight:400}.modal-actions{justify-content:flex-end;gap:.6rem;margin-top:.5rem;display:flex}.danger-zone{background:snow;border-color:#efc0bd;justify-content:space-between;align-items:center;gap:1rem;margin-top:1rem;display:flex}.danger-zone p{color:#865754;max-width:760px;margin:.45rem 0 0;font-size:.8rem}.danger-button{color:#fff;cursor:pointer;background:#d85b58;border:1px solid #d85b58;border-radius:.65rem;justify-content:center;align-items:center;gap:.45rem;padding:.7rem .9rem;font-weight:800;display:inline-flex}.danger-button:hover{background:#b74340}.danger-button:disabled{opacity:.45}.danger-icon{color:#b74340;background:#fbe6e5;border-radius:.8rem;place-items:center;width:48px;height:48px;margin-bottom:.7rem;display:grid}.deletion-modal code{color:#9a312f;word-break:break-all;background:#f3eeee;border-radius:.3rem;padding:.2rem .35rem;font-size:.72rem}.deletion-summary{grid-template-columns:repeat(4,1fr);gap:.5rem;margin:1rem 0;display:grid}.deletion-summary span{color:var(--muted);text-align:center;background:#f5f7f7;border-radius:.6rem;padding:.65rem;font-size:.65rem}.deletion-summary b{color:var(--navy);font-size:1rem;display:block}.backup-notice{color:#805719;background:#fff0d8;border-radius:.6rem;gap:.5rem;padding:.75rem;font-size:.72rem;line-height:1.4;display:flex}.backup-notice svg{flex:0 0 17px}.interaction-toolbar{z-index:12;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#081f27eb;border:1px solid #ffffff1d;border-radius:.75rem;align-items:center;gap:.28rem;padding:.35rem;display:flex;position:absolute;top:4.6rem;left:50%;transform:translate(-50%);box-shadow:0 10px 30px #0007}.interaction-toolbar button,.interaction-toolbar select{color:#bcd0d2;cursor:pointer;background:#ffffff0a;border:1px solid #0000;border-radius:.48rem;align-items:center;gap:.35rem;min-height:36px;padding:.48rem .62rem;font-size:.68rem;font-weight:800;display:flex}.interaction-toolbar button svg{width:15px;height:15px}.interaction-toolbar button:hover:not(:disabled),.interaction-toolbar button.active{color:#fff;background:#16a79e38;border-color:#35c9bd66}.interaction-toolbar button.finish{background:var(--teal);color:#fff}.interaction-toolbar select{background:#12323b;border-color:#ffffff15;max-width:130px}.interaction-toolbar select option{background:#12323b}.map-workspace.mode-draw .orthophoto,.model-3d-shell.mode-draw .model-3d-canvas{cursor:crosshair}.map-workspace.mode-navigate .orthophoto,.model-3d-shell.mode-navigate .model-3d-canvas{cursor:grab}.map-workspace.mode-navigate .orthophoto.panning{cursor:grabbing}.map-workspace.mode-select .orthophoto,.model-3d-shell.mode-select .model-3d-canvas{cursor:default}.orthophoto{touch-action:none}.orthophoto.interaction-navigate svg,.orthophoto.interaction-draw svg{pointer-events:none}.orthophoto.interaction-select svg{pointer-events:auto}.draft-marker{pointer-events:all;cursor:grab}.draft-marker:active{cursor:grabbing}.draft-hit{fill:#0000;stroke:none}.draft-marker.selected .draft-point{fill:#ffc857;stroke:#fff}.draft-marker.selected .draft-crosshair{stroke:#ffc857;stroke-width:1.5px}.draft-marker.pending{opacity:.55}.draft-index{fill:#fff;paint-order:stroke;stroke:#07161b;stroke-width:2px;pointer-events:none;font-size:8px;font-weight:800}.draft-actions{grid-template-columns:repeat(3,1fr);gap:.35rem;margin-top:.45rem;display:grid}.draft-actions button{color:#d9e7e8;background:#ffffff08;border:1px solid #ffffff18;border-radius:.45rem;place-items:center;min-height:34px;display:grid}.draft-actions svg{width:15px}.model-3d-canvas{touch-action:none}.model-3d-shell.mode-select .model-3d-help{color:#ffd989}.model-3d-shell.mode-draw .model-3d-help{color:#79e1d7}@media (width<=1050px){.admin-master-detail{grid-template-columns:1fr}.admin-user-table{border-right:0;border-bottom:1px solid var(--line)}.admin-user-detail{max-height:none}.admin-stat-grid{grid-template-columns:1fr 1fr}}@media (width<=850px){.interaction-toolbar{grid-template-columns:repeat(4,1fr);display:grid;position:fixed;inset:auto .6rem .6rem;transform:none}.interaction-toolbar button,.interaction-toolbar select{justify-content:center;min-height:44px}.interaction-toolbar select{max-width:none}.interaction-toolbar .finish{grid-column:span 2}.map-status{bottom:7.5rem}.admin-toolbar{flex-wrap:wrap}.admin-toolbar .search{flex-basis:100%}.danger-zone{flex-direction:column;align-items:flex-start}}@media (width<=600px){.admin-stat-grid{grid-template-columns:1fr 1fr}.admin-stat-grid>div{padding:.8rem}.admin-user-table>button{grid-template-columns:auto 1fr auto}.admin-user-table .role-pill{display:none}.user-facts,.admin-action-pair,.password-reset-row{grid-template-columns:1fr}.deletion-summary{grid-template-columns:1fr 1fr}.admin-toolbar select{flex:1;min-width:135px}}.shape-list>div{grid-template-columns:auto minmax(0,1fr) auto}.shape-list>div>small{grid-column:2}.shape-list>div>button{color:#a9c2c4;cursor:pointer;background:#ffffff08;border:1px solid #ffffff16;border-radius:.4rem;grid-area:1/3/3;align-self:center;padding:.3rem .42rem;font-size:.62rem}.shape-list>div>button:hover{color:#fff;border-color:#35c9bd66}.draft-box>.secondary{color:#b8cbcd;background:#ffffff08;border-color:#ffffff18;width:100%;margin-top:.35rem}.draft-box>.secondary svg{width:15px}
