
:root{--navy:#101b2b;--navy2:#18253a;--muted:#77869a;--text:#23344a;--teal:#0c907b;--aqua:#55dbc0;--line:#e9edf2;--bg:#f3f6f9;--white:#fff;--shadow:0 8px 30px rgba(24,48,74,.045)}
*{box-sizing:border-box}html,body{margin:0;min-height:100%;font-family:Inter,-apple-system,BlinkMacSystemFont,'Segoe UI',Arial,sans-serif;color:var(--text);background:var(--bg)}button,input{font:inherit}button{cursor:pointer}button:disabled{opacity:.45;cursor:default}a{color:inherit}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}[hidden]{display:none!important}
.app-shell{display:flex;min-height:100vh}.sidebar{width:304px;flex:0 0 304px;display:flex;flex-direction:column;color:#e7eff5;background:var(--navy);box-shadow:8px 0 25px rgba(11,20,33,.07);z-index:500}.brand{display:flex;align-items:center;gap:11px;padding:27px 23px 24px;border-bottom:1px solid #263449}.brand-logo{color:#f2fafb;display:flex;align-items:center;justify-content:center;width:43px;height:43px;background:#22374b;border:1px solid #345266;border-radius:12px}.brand-name{font-size:25px;line-height:1.1;letter-spacing:-1.3px;font-weight:750;color:#f6fbfc}.brand-name span{color:#70e2ca}.brand-sub{font-size:9px;font-weight:700;letter-spacing:1.35px;color:#9baebe;margin-top:5px}.sidebar-scroll{padding:27px 20px;overflow-y:auto;flex:1;scrollbar-width:thin;scrollbar-color:#455366 transparent}.section-label{font-size:10px;letter-spacing:1.2px;font-weight:800;color:#8fa3b6;margin-bottom:13px}.section-gap{margin-top:31px}.search-form{margin:0}.search-input-wrap{display:flex;align-items:center;gap:8px;padding:0 6px 0 13px;border:1px solid #385066;border-radius:9px;background:#203149;transition:border .15s}.search-input-wrap:focus-within{border-color:#64d5c3}.search-symbol{color:#9fbbce;font-size:24px}.search-input-wrap input{min-width:0;flex:1;background:none;color:#f4f9fb;border:0;height:45px;outline:none;font-size:12px}.search-input-wrap input::placeholder{color:#93a3b4}.search-input-wrap button{width:28px;height:28px;border:0;background:#2e4860;color:#c4efe5;border-radius:6px}.helper{font-size:11px;line-height:1.65;color:#9baebe;margin:12px 0}.quick-location{display:flex;align-items:center;gap:8px;padding:11px 10px;width:100%;border:1px solid #2b4056;background:transparent;border-radius:8px;color:#d5e5ef;text-align:left;font-size:12px;font-weight:600}.quick-location span{margin-left:auto;color:#8c9caf;font-weight:400;font-size:10px}.search-results{margin-top:8px;border:1px solid #32465c;border-radius:8px;background:#1f3148;overflow:hidden}.search-results button{display:block;width:100%;border:0;border-bottom:1px solid #334861;background:transparent;color:#deebf1;padding:10px 11px;text-align:left;font-size:11px;line-height:1.4}.search-results button:hover{background:#2e445a}.search-results p{font-size:11px;margin:10px;color:#a4b8c6}.segmented{display:flex;background:#213148;border:1px solid #34475d;border-radius:9px;padding:4px}.segmented button{flex:1;background:none;color:#a4b6c5;border:0;border-radius:6px;padding:10px 3px;font-size:12px;font-weight:650}.segmented button.selected{background:#3b5366;color:#f2f9fa;box-shadow:0 2px 4px #131f3080}.layer-card{border:1px solid #314356;background:#1a2a3e;padding:14px 11px;border-radius:10px}.layer-item{display:flex;gap:10px;align-items:center}.layer-icon{flex:0 0 34px;height:34px;border-radius:9px;display:grid;place-items:center;font-size:20px}.geology-icon{background:#2f4754;color:#71ddc6}.bss-icon{background:#403e4d;color:#ffc474}.layer-copy{flex:1;min-width:0}.layer-copy strong,.layer-copy span{display:block}.layer-copy strong{font-size:12px;color:#ebf4f7;white-space:nowrap}.layer-copy span{font-size:10px;color:#93a7b8;margin-top:4px}.switch{position:relative;display:inline-block;width:35px;height:20px}.switch input{width:0;height:0;opacity:0}.switch span{position:absolute;inset:0;background:#526171;border-radius:99px;transition:all .2s}.switch span:before{content:"";position:absolute;width:14px;height:14px;left:3px;top:3px;border-radius:50%;background:white;transition:transform .2s}.switch input:checked+span{background:#0cab8a}.switch input:checked+span:before{transform:translateX(15px)}.opacity-row{display:flex;align-items:center;gap:9px;margin:17px 0 3px;padding:0 2px}.opacity-row label,.opacity-row span{font-size:10px;color:#a6b8c3}.opacity-row input{min-width:0;flex:1;accent-color:#48cfb7;height:4px}.opacity-row span{min-width:31px;text-align:right}.thin-separator{height:1px;background:#314557;margin:16px 1px}.drawing-actions{display:grid;gap:8px}.btn{border:0;display:inline-flex;justify-content:center;align-items:center;border-radius:8px;font-size:12px;font-weight:700;line-height:1.1;min-height:39px;white-space:nowrap;padding:9px 14px;transition:transform .12s,background .15s}.btn:hover:not(:disabled){transform:translateY(-1px)}.btn-primary{background:#09a88d;color:white;box-shadow:0 4px 12px #01856b24}.btn-primary.drawing{background:#e59b40;color:#142c36}.drawing-mini-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px}.btn-muted{background:#23374b;color:#d2e3ee;border:1px solid #3a4d60;font-size:10px;padding:7px 6px}.btn-text{background:transparent;color:#a8bdcb;font-size:11px;min-height:25px}.metrics{display:grid;grid-template-columns:1fr 1fr;border:1px solid #304357;border-radius:9px;margin-top:18px;overflow:hidden}.metrics div{padding:12px 10px}.metrics div+div{border-left:1px solid #304357}.metrics span,.metrics strong{display:block}.metrics span{font-size:9px;color:#9baebe;margin-bottom:7px}.metrics strong{font-size:16px;letter-spacing:-.4px;color:#e8f5f4}.source-card{background:#19293d;border:1px solid #314457;border-radius:9px;padding:13px 12px}.source-card>div{display:flex;align-items:center;gap:8px;padding:7px 0;font-size:11px}.source-card>div span:nth-child(2){flex:1}.source-card small{font-size:10px;color:#9fafbe}.source-light{display:inline-block;width:7px;height:7px;border-radius:50%;background:#708296}.source-light.ok{background:#36d4a5;box-shadow:0 0 0 3px #36d4a51c}.source-light.bad{background:#ef9d68}.source-light.checking{background:#d7bc67}.source-card>button{border:0;background:none;color:#65d8c4;padding:12px 0 2px;font-size:11px;text-align:left}.side-footer{border-top:1px solid #28374b;color:#9babbc;padding:16px 21px;font-size:10px;line-height:1.7}.side-footer small{font-size:9px}.workspace{min-width:0;flex:1}.topbar{height:72px;background:#fff;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;padding:0 36px;gap:20px}.topbar-start,.topbar-actions{display:flex;align-items:center;gap:12px}.breadcrumb{font-size:10px;letter-spacing:.7px;font-weight:700;color:#91a0ad}.breadcrumb span{margin:0 9px;color:#c6cfd7}.breadcrumb b{color:#27384a;font-weight:700}.prototype-pill{color:#117e6e;background:#eaf8f4;border:1px solid #c5ebe1;border-radius:100px;padding:7px 11px;font-size:9px;font-weight:850;letter-spacing:.6px;white-space:nowrap}.prototype-pill span{display:inline-block;width:6px;height:6px;background:#21ae8f;border-radius:100px;margin-right:4px}.btn-outline{background:#fff;color:#415267;border:1px solid #dce3e9}.btn-dark{background:#17283e;color:#fff}.hamburger{display:none;border:0;background:transparent;color:#17283e;font-size:23px}.page-title{display:flex;align-items:center;justify-content:space-between;padding:32px 36px 25px}.eyebrow{font-size:10px;letter-spacing:1.3px;color:#0c9b85;font-weight:750;margin-bottom:10px}h1{font-size:26px;letter-spacing:-1px;line-height:1.3;color:#1c3046;font-weight:770;margin:0 0 8px}.page-title p{margin:0;font-size:12px;line-height:1.7;color:#738396}.title-symbol{display:grid;place-items:center;border:1px solid #e3e9ee;color:#94a7b6;border-radius:12px;width:45px;height:45px;font-size:22px}.map-layout{padding:0 36px;display:grid;grid-template-columns:minmax(350px,1fr) 330px;gap:18px;align-items:stretch;height:min(685px,calc(100vh - 254px));min-height:520px}.map-card,.inspector{background:#fff;border:1px solid #e4ebf0;box-shadow:var(--shadow);border-radius:12px;overflow:hidden;position:relative}.map-card{isolation:isolate}.map-card #map{position:absolute;inset:0;background:#e7eee9;z-index:1}.map-chip{position:absolute;top:18px;left:18px;z-index:401;display:flex;align-items:center;gap:8px;padding:11px 14px;background:rgba(255,255,255,.96);box-shadow:0 4px 14px #1c2a3529;border-radius:8px;font-size:11px;color:#33495b;font-weight:650;max-width:calc(100% - 140px)}.map-chip-dot{width:7px;height:7px;background:#04ae92;border-radius:50%}.map-tools{position:absolute;right:18px;top:18px;z-index:401;display:grid;gap:5px}.map-tools button{width:37px;height:37px;border:1px solid #e4e9ee;box-shadow:0 4px 14px #1c2a3517;background:white;border-radius:7px;font-size:21px;color:#3c5263}.map-legend{position:absolute;bottom:27px;left:15px;z-index:401;display:flex;flex-wrap:wrap;gap:11px;padding:10px 12px;background:#fffc;border:1px solid #e3e8ed;border-radius:7px;font-size:10px;font-weight:600;color:#415366}.map-legend span{display:inline-flex;gap:5px;align-items:center}.legend-swatch{height:10px;width:10px;border-radius:3px;display:inline-block}.legend-swatch.geo{background:#bddda9;border:1px solid #93b88e}.legend-swatch.bss{background:#e3a153;border-radius:100%}.legend-swatch.site{background:#14a788;border:1px solid #08715c}.map-error{position:absolute;z-index:501;bottom:78px;left:14px;right:14px;max-width:600px;border-radius:9px;background:#fff1e9;color:#8c481a;padding:13px;border:1px solid #ecc8a8;font-size:12px;line-height:1.5}.leaflet-container{font-family:inherit!important}.leaflet-control-zoom{display:none!important}.leaflet-control-attribution{font-size:8px!important}.draw-vertex{background:#fff;border:2px solid #0da38c;border-radius:100%;width:11px;height:11px;box-shadow:0 0 0 3px #0da38c33}.inspector{display:flex;flex-direction:column}.inspector-header{padding:22px 20px 18px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid #e7edf2}.inspector-eyebrow{font-size:9px;letter-spacing:1.25px;color:#0c9b83;font-weight:750}.inspector h2{font-size:17px;color:#1e3247;margin:8px 0 0;letter-spacing:-.4px}.inspect-icon{width:36px;height:36px;border-radius:9px;background:#e9f8f4;color:#0c997f;display:grid;place-items:center;font-size:21px}.inspector-body{overflow-y:auto;padding:0 19px 18px}.detail-block{padding:22px 0 21px;border-bottom:1px solid #edf1f4}.detail-title{display:flex;align-items:center;justify-content:space-between;font-size:10px;font-weight:850;color:#344659;letter-spacing:.7px;margin-bottom:15px}.circle-mini{font-weight:650;font-size:9px;color:#9bacba;background:#f0f4f6;border-radius:100%;width:25px;height:25px;display:grid;place-items:center;letter-spacing:0}.coordinate-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px}.coordinate-grid div{border:1px solid #e9eff2;background:#f8fafb;border-radius:8px;padding:12px 11px}.coordinate-grid small,.coordinate-grid strong{display:block}.coordinate-grid small{font-size:9px;color:#9aa9b6;font-weight:800;letter-spacing:.9px}.coordinate-grid strong{font-size:14px;color:#294052;margin-top:6px}.subtle-action{border:0;background:none;color:#0a9981;margin-top:11px;font-weight:650;font-size:11px;padding:4px 0}.results-box{padding:16px;border:1px dashed #d7e2e9;background:#f9fbfc;border-radius:9px;min-height:104px;max-height:240px;overflow:auto;font-size:11px;line-height:1.55;color:#758796}.results-box p{margin:0}.placeholder-graphic{display:block;font-size:23px;color:#aec6c7;margin-bottom:6px}.result-line{margin:0 0 8px;overflow-wrap:anywhere}.results-box strong{color:#27465a}.results-box .raw{white-space:pre-wrap;overflow-wrap:anywhere;color:#40566a;font-size:10px}.results-box .info-tag{display:inline-block;background:#eef7f3;border-radius:5px;color:#17836d;font-size:9px;padding:4px 6px;margin:0 0 8px;font-weight:700}.warning-note{display:flex;align-items:start;gap:9px;margin-top:20px;padding:12px;background:#fff9ef;border:1px solid #f4e9d3;border-radius:9px;color:#98743c}.warning-note span{font-size:17px}.warning-note p{font-size:10px;line-height:1.6;margin:0}.bottom-row{display:flex;justify-content:space-between;gap:10px;align-items:center;padding:15px 36px 25px;color:#97a6b3;font-size:10px}.bottom-row a{text-decoration:none;color:#6a8492}.toast{position:fixed;right:25px;bottom:25px;z-index:2000;max-width:390px;background:#162a3e;color:#edf6f7;border-radius:9px;padding:12px 17px;box-shadow:0 10px 25px #071b2f3c;font-size:12px;transform:translateY(20px);opacity:0;pointer-events:none;transition:all .25s}.toast.visible{transform:translateY(0);opacity:1}.leaflet-popup-content-wrapper{border-radius:9px!important}.leaflet-popup-content{font-size:11px!important}
@media(max-width:1270px){.map-layout{grid-template-columns:minmax(310px,1fr) 295px;padding:0 20px}.topbar{padding:0 20px}.page-title{padding:28px 20px 24px}.bottom-row{padding:15px 20px}.sidebar{width:280px;flex-basis:280px}.brand{padding-left:19px}.sidebar-scroll{padding:24px 17px}}
@media(max-width:1000px){.map-layout{grid-template-columns:1fr;height:auto}.map-card{min-height:490px}.inspector{min-height:350px}.inspector-body{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;overflow:visible}.detail-block{border-bottom:0}.warning-note{grid-column:1/-1;margin-top:0}.sidebar{width:270px;flex-basis:270px}.topbar-actions .prototype-pill{display:none}}
@media(max-width:760px){.sidebar{position:fixed;height:100vh;width:296px;transform:translateX(-100%);transition:transform .25s}.sidebar.mobile-open{transform:translateX(0)}.hamburger{display:block}.topbar{height:65px;padding:0 14px}.topbar-actions{gap:5px}.topbar-actions .btn{font-size:10px;padding:8px;min-height:35px}.topbar-actions #print-btn{display:none}.breadcrumb{display:none}.page-title{padding:23px 15px 17px}.page-title h1{font-size:21px}.page-title p{font-size:11px}.title-symbol{display:none}.map-layout{padding:0 10px;gap:10px}.map-card{min-height:470px}.inspector-body{grid-template-columns:1fr 1fr}.detail-block:nth-child(3){grid-column:1/-1;padding-top:0}.bottom-row{padding:14px;display:block;line-height:1.8}.map-chip{left:10px;top:10px;font-size:10px;padding:10px;max-width:calc(100% - 70px)}.map-tools{right:10px;top:10px}.map-tools button{width:32px;height:32px}.map-legend{left:7px;bottom:17px;gap:7px;font-size:9px}}
@media print{.sidebar,.topbar,.map-tools,.map-chip,.map-legend,.bottom-row,.btn,.subtle-action{display:none!important}.workspace{width:100%}.page-title{padding:10px}.map-layout{display:block;height:auto;padding:0}.map-card{height:300px;page-break-inside:avoid}.inspector{box-shadow:none;border:0;display:block}.inspector-body{display:block}.results-box{max-height:none;min-height:0}.detail-block{padding:10px;border-bottom:1px solid #ddd}.inspector-header{padding:14px}.map-card #map{height:300px}body{background:white}}

.import-box{border:1px solid #304557;background:#1b2b3e;border-radius:8px;padding:11px;display:grid;gap:7px}.import-button{display:flex;cursor:pointer;white-space:normal;text-align:center}.import-box>span{font-size:10px;color:#9eb5c2}.import-box>button{border:0;text-align:left;background:transparent;color:#66d6bf;font-size:10px;padding:3px 0}


.risk-row{padding:9px 0;border-bottom:1px solid #e5ebf0;color:#40566a}.risk-row:last-child{border-bottom:none}.risk-row strong{display:block;font-size:11px}.risk-row small{display:block;font-size:10px;line-height:1.6;margin-top:3px}.geo-field{padding:7px 0;border-bottom:1px solid #e6edf0;color:#365166}.geo-field small{display:block;letter-spacing:.4px;font-size:9px;text-transform:uppercase;color:#8394a5}.geo-field strong{display:block;font-size:12px;white-space:normal;overflow-wrap:anywhere;margin-top:2px}.geo-desc{padding-top:7px;line-height:1.6;color:#3c576b;overflow-wrap:anywhere}.raw-info{font-size:10px;white-space:pre-wrap;overflow-wrap:anywhere}.risk-badge{font-size:9px;border-radius:5px;background:#f5ebec;color:#9c4233;padding:3px 5px;display:inline-block;margin-left:3px}.inspector .results-box{max-height:310px}
@media(max-width:1000px){.inspector-body{grid-template-columns:repeat(2,minmax(0,1fr))}.warning-note{grid-column:1/-1}}
@media(max-width:760px){.inspector-body{display:block}}
.geo-diagnostic{font-size:10px;color:#718295;margin-top:8px}.geo-diagnostic summary{cursor:pointer;text-decoration:underline;text-underline-offset:2px}.geo-diagnostic pre{white-space:pre-wrap;word-break:break-word;max-height:140px;overflow:auto;background:#f5f7fa;padding:9px;border-radius:6px;font-family:ui-monospace,Consolas,monospace;font-size:9px}.geo-source-detail{font-size:10px;line-height:1.6;color:#637a8b;margin-top:6px}.geo-ref-link{font-size:10px;display:inline-block;margin-top:9px;color:#087f78}.geo-source-choice{display:flex;gap:6px;align-items:center;flex-wrap:wrap;margin:8px 0 0}

/* BSS side panel: interactive record and official fiche link */
.bss-direct-link{display:block;margin:13px 0 7px;background:#e7f6f1;color:#047c68;border:1px solid #bfe4d6;border-radius:8px;padding:11px 10px;font-size:11px;line-height:1.6;font-weight:750;text-decoration:none;overflow-wrap:anywhere}
.bss-direct-link:hover{background:#d8f0e8}
.bss-choices{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.bss-choices button{padding:7px 8px;border:1px solid #d8e3e9;border-radius:6px;background:#fff;color:#426078;font-size:10px;cursor:pointer}
.bss-choices button.active{background:#0b947d;color:#fff;border-color:#0b947d}

/* GeoTerrain V15 — lecture claire des fiches BSS et contexte géologique non équivalent */
.bss-record-title{font-size:16px;color:#1e4659;font-weight:800;overflow-wrap:anywhere;margin:8px 0 10px}
.bss-technical-details{border:1px solid #dde8ec;border-radius:7px;padding:10px;background:#fff;margin:12px 0}
.bss-technical-details>summary{cursor:pointer;color:#427083;font-size:11px;font-weight:700}
.bss-technical-details .geo-field{padding:5px 0}
.bss-raw-fallback{white-space:pre-wrap;word-break:break-word;font-size:10px;line-height:1.6;max-height:230px;overflow:auto}
.coarse-geology{border-top:1px solid #ebd9bc;margin-top:15px;padding:11px;background:#fffbf3;border-radius:7px;color:#685133}
.coarse-geology-title{font-size:10px;font-weight:800;color:#9d6732;letter-spacing:.3px;padding-bottom:6px}
.coarse-geology .geo-field{border-bottom-color:#f4e8d9}
.coarse-geology .geo-source-detail{color:#8a6950}
