:root{
	--color-primary:#4CAF50;
	--color-primary-light:rgba(76,175,80,.25);
	--color-primary-bg:#e8f5e9;
	--color-danger:#f44336;
	--color-danger-dark:#d32f2f;
	--color-info:#2196F3;
	--color-info-dark:#1976D2;
	--color-neutral:#999;
	--color-import:#b0c550;
	--color-text:#333;
	--color-text-light:#444;
	--color-text-muted:#666;
	--color-border:#ddd;
	--color-border-light:#eee;
	--color-bg-hover:#f0f0f0;
	--color-bg-alt:#f9f9f9;
	--color-bg-surface:#fafafa;
	--shadow-sm:0 1px 2px rgba(0,0,0,.2);
	--shadow-md:0 2px 4px rgba(0,0,0,.2);
	--shadow-lg:0 4px 8px rgba(0,0,0,.2);
	--radius-sm:3px;
	--radius-md:4px;
	--sidebar-width:400px;
}
*{margin:0;padding:0;box-sizing:border-box}
body{font-family:Arial,sans-serif;font-size:14px;overflow:hidden}
#map{position:absolute;top:0;left:0;right:var(--sidebar-width);bottom:0;z-index:1}
#commune-search{position:absolute;top:10px;left:50%;transform:translateX(-50%);z-index:1100;background:rgba(255,255,255,.9);padding:6px 10px;border-radius:4px;box-shadow:0 2px 4px rgba(0,0,0,.2)}
#commune-search form{display:flex;align-items:center;gap:6px;position:relative}
#commune-search input{width:230px;padding:6px 8px;border:1px solid #ccc;border-radius:3px;font-size:13px}
#commune-search-loader{width:16px;height:16px;border-radius:50%;border:2px solid #ccc;border-top-color:var(--color-primary);animation:commune-spin .8s linear infinite;margin-left:-4px;margin-right:2px;display:none}
#commune-search button{padding:6px 12px;border:none;border-radius:var(--radius-sm);background:var(--color-primary);color:#fff;cursor:pointer;font-size:13px}
#commune-search button:hover{opacity:.9}
#commune-search input:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 1px var(--color-primary-light)}
#commune-search-suggestions{position:absolute;top:100%;left:0;right:0;background:#fff;border:1px solid #ddd;border-top:none;max-height:220px;overflow-y:auto;box-shadow:0 2px 4px rgba(0,0,0,.2);z-index:1200;display:none}
.commune-suggestion-item{padding:6px 8px;font-size:13px;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.commune-suggestion-item:hover{background:#f0f0f0}
@keyframes commune-spin{to{transform:rotate(360deg)}}
@media (max-width:600px){#commune-search{left:50%;transform:translateX(-50%);width:90%}#commune-search input{flex:1;width:auto}}
#controls{position:absolute;top:10px;left:10px;z-index:1000;display:flex;flex-direction:column;gap:5px;background:rgba(255,255,255,.5);padding:15px;border-radius:5px}
#controls button{padding:8px 12px;border:none;background:#fff;cursor:pointer;font-size:13px;box-shadow:var(--shadow-md);transition:background .2s}
#controls button:hover{background:var(--color-bg-hover)}
#controls button.active,#controls button.btn-active{background:var(--color-primary);color:#fff}
#sidebar{position:absolute;top:0;right:0;bottom:0;width:var(--sidebar-width);background:#fff;box-shadow:-2px 0 5px rgba(0,0,0,.1);padding:15px;overflow-y:auto;z-index:1000}
#sidebar h2{font-size:18px;margin-bottom:15px;border-bottom:2px solid var(--color-primary);padding-bottom:5px}

/* Onglets de la sidebar */
.sidebar-tabs{display:flex;border-bottom:2px solid var(--color-primary);margin-bottom:12px}
.sidebar-tab{flex:1;padding:7px 4px;font-size:13px;font-weight:600;background:none;border:none;border-bottom:3px solid transparent;margin-bottom:-2px;cursor:pointer;color:#666;transition:color .15s,border-color .15s}
.sidebar-tab.active{color:var(--color-primary);border-bottom-color:var(--color-primary)}
.sidebar-tab:hover:not(.active){color:#333}
.sidebar-tab-content{display:none}
.sidebar-tab-content.active{display:block}
.entity-section{margin-bottom:20px}
.entity-guideline-group{margin-bottom:12px}
.entity-guideline-group-header{display:flex;align-items:center;gap:6px;padding:4px 8px;background:var(--color-bg-alt);border-left:3px solid var(--color-border);margin-bottom:4px;user-select:none}
.entity-guideline-group-header:hover{background:var(--color-bg-hover)}
.entity-guideline-group-arrow{font-size:9px;color:var(--color-text-muted);flex-shrink:0}
.entity-guideline-group-title{font-size:11px;font-weight:bold;text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-muted)}
.section-header{font-size:14px;font-weight:bold;color:var(--color-text-muted);text-transform:uppercase;margin-bottom:10px;padding-bottom:5px;border-bottom:1px solid var(--color-border)}
.entity-item{background:var(--color-bg-alt);padding:10px;margin-bottom:10px;border-left:4px solid;cursor:pointer}
.entity-item:hover{background:var(--color-bg-hover)}
.entity-item.active{background:var(--color-primary-bg);box-shadow:0 0 0 1px var(--color-primary) inset}
.entity-item h4{margin-bottom:5px;font-size:14px}
.entity-item p{font-size:12px;color:var(--color-text-muted);margin-bottom:3px}
.entity-actions{margin-top:8px;display:flex;gap:5px}
.entity-actions button{padding:4px 8px;font-size:11px;border:none;cursor:pointer;background:var(--color-info);color:#fff}
.entity-actions button:hover{background:var(--color-info-dark)}
.entity-actions .btn-delete{background:var(--color-danger)}
.entity-actions .btn-delete:hover{background:var(--color-danger-dark)}
.modal{display:none;position:fixed;z-index:2000;left:0;top:0;width:100%;height:100%;background:rgba(0,0,0,.5);overflow-y:auto}
.modal-content{background:#fff;margin:20px auto;padding:20px;width:90%;max-width:500px;border-radius:var(--radius-md);box-shadow:var(--shadow-lg)}
.close{float:right;font-size:28px;font-weight:bold;cursor:pointer;color:#aaa}
.close:hover{color:#000}
#modal .modal-content{max-width:900px;border-top:4px solid var(--color-primary)}
#modal h3{margin-bottom:16px;font-size:20px;text-align:center;color:var(--color-text);padding-bottom:10px;border-bottom:1px solid var(--color-border-light)}

/* Modal Tabs */
.modal-tabs{display:flex;gap:0;margin-bottom:20px;border-bottom:2px solid var(--color-border-light);overflow-x:auto}
.modal-tab{padding:12px 24px;background:transparent;border:none;border-bottom:3px solid transparent;cursor:pointer;font-size:14px;font-weight:500;color:var(--color-text-muted);transition:all .2s;white-space:nowrap}
.modal-tab:hover{color:var(--color-text);background:var(--color-bg-hover)}
.modal-tab.active{color:var(--color-primary);border-bottom-color:var(--color-primary);font-weight:600}
.modal-tab-content{display:none}
.modal-tab-content.active{display:block;animation:fadeIn .3s ease-in}
@keyframes fadeIn{from{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}

/* Tab: Mes Modèles */
.form-row{display:flex;gap:16px}
.form-col{flex:1}
#tab-my-models h4{font-size:15px;margin-bottom:12px;color:var(--color-text);padding-bottom:8px;border-bottom:1px solid var(--color-border-light)}

/* Tab: Bibliothèques */
#tab-libraries{min-height:400px}
.libraries-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;color:var(--color-text-muted)}
.libraries-loading .spinner{width:40px;height:40px;border:4px solid var(--color-border-light);border-top-color:var(--color-primary);border-radius:50%;animation:spin 1s linear infinite;margin-bottom:16px}
@keyframes spin{to{transform:rotate(360deg)}}
#libraries-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px;padding:8px 0}
.library-card{background:#fff;border:2px solid var(--color-border-light);border-radius:var(--radius-md);padding:16px;cursor:pointer;transition:all .2s;position:relative}
.library-card:hover{border-color:var(--color-primary);box-shadow:var(--shadow-md);transform:translateY(-2px)}
.library-card-header{display:flex;align-items:center;gap:12px;margin-bottom:12px}
.library-card-icon{font-size:32px;line-height:1}
.library-card-title{flex:1;font-size:16px;font-weight:600;color:var(--color-text)}
.library-card-description{font-size:13px;color:var(--color-text-muted);line-height:1.5;margin-bottom:12px;min-height:40px}
.library-card-stats{display:flex;gap:16px;font-size:12px;color:var(--color-text-muted);padding-top:12px;border-top:1px solid var(--color-border-light)}
.library-card-stat{display:flex;align-items:center;gap:4px}
.library-card-stat strong{color:var(--color-text)}

/* Tab: Import Excel */
.import-excel-container{max-width:600px;margin:0 auto;padding:20px}
.import-excel-container h4{font-size:18px;margin-bottom:12px;color:var(--color-text)}
.import-excel-container p{color:var(--color-text-muted);margin-bottom:20px;line-height:1.6}
.import-actions{display:flex;flex-direction:column;gap:12px;margin-bottom:30px}
.btn-primary,.btn-secondary{display:inline-block;padding:12px 24px;border:none;border-radius:var(--radius-sm);font-size:14px;font-weight:500;cursor:pointer;text-align:center;text-decoration:none;transition:all .2s}
.btn-primary{background:var(--color-primary);color:#fff}
.btn-primary:hover{background:var(--color-primary-dark);transform:translateY(-1px);box-shadow:var(--shadow-md)}
.btn-secondary{background:#fff;color:var(--color-text);border:2px solid var(--color-border)}
.btn-secondary:hover{border-color:var(--color-primary);color:var(--color-primary)}
.import-info{background:var(--color-bg-surface);border-left:4px solid var(--color-primary);padding:16px;border-radius:var(--radius-sm)}
.import-info h5{font-size:14px;margin-bottom:8px;color:var(--color-text)}
.import-info p{font-size:13px;color:var(--color-text-muted);margin-bottom:8px}
.import-info ul{margin:0;padding-left:20px;font-size:13px;color:var(--color-text-muted);line-height:1.8}
.import-info li strong{color:var(--color-text);font-family:monospace}

/* Library Preview Modal */
.library-preview-modal{z-index:10001}
.library-preview-content{max-width:900px!important;max-height:85vh;overflow-y:auto}
.library-preview-description{font-size:14px;color:var(--color-text-muted);text-align:center;margin:10px 0 20px;padding-bottom:16px;border-bottom:1px solid var(--color-border-light)}
.library-collections-container{margin:20px 0}
.collection-section{margin-bottom:24px;border:1px solid var(--color-border-light);border-radius:var(--radius-md);overflow:hidden}
.collection-header{background:var(--color-bg-surface);padding:12px 16px;border-bottom:2px solid var(--color-border)}
.collection-header h4{margin:0 0 4px;font-size:15px;color:var(--color-text)}
.collection-header p{margin:4px 0;font-size:13px;color:var(--color-text-muted)}
.collection-header-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}
.btn-toggle-collection{padding:6px 14px;font-size:12px;border:1px solid var(--color-border);background:#fff;color:var(--color-text);border-radius:var(--radius-sm);cursor:pointer;transition:all .2s;font-weight:500}
.btn-toggle-collection:hover{background:var(--color-primary);color:#fff;border-color:var(--color-primary)}
.collection-count{display:inline-block;margin-top:6px;font-size:12px;color:var(--color-text-muted);font-weight:600;background:#fff;padding:4px 10px;border-radius:12px;border:1px solid var(--color-border-light)}
.entities-table-container{overflow-x:auto;max-height:400px;overflow-y:auto}
.entities-table{width:100%;border-collapse:collapse;font-size:13px}
.entities-table thead{position:sticky;top:0;background:var(--color-bg-surface);z-index:10}
.entities-table th{text-align:left;padding:10px 12px;font-weight:600;border-bottom:2px solid var(--color-border);color:var(--color-text);font-size:12px;text-transform:uppercase;letter-spacing:.03em}
.entities-table tbody tr{border-bottom:1px solid var(--color-border-light)}
.entities-table tbody tr:hover{background:var(--color-bg-hover)}
.entities-table td{padding:10px 12px}
.entities-table td:first-child{width:40px;text-align:center}
.library-preview-actions{display:flex;gap:12px;justify-content:flex-end;margin-top:20px;padding-top:20px;border-top:2px solid var(--color-border-light)}
.import-mode-actions button{width:100%}
.empty-state{text-align:center;padding:40px 20px;color:var(--color-text-muted)}
.modal-entity-columns{display:flex;gap:16px;margin-top:10px}
.modal-entity-left{flex:2;min-width:0}
.modal-entity-right{flex:1;min-width:0;border-left:1px solid var(--color-border-light);padding-left:14px;background:var(--color-bg-surface);border-radius:0 4px 4px 0}
.modal-entity-right-header{display:flex;flex-direction:column;gap:6px;margin-bottom:10px}
.modal-entity-right-title{font-size:13px;font-weight:bold;color:var(--color-text);text-transform:uppercase;letter-spacing:.03em}
.modal-entity-right-actions{display:flex;flex-direction:row;align-items:flex-start;gap:4px;font-size:11px}
.modal-entity-right-actions button{padding:4px 10px;font-size:11px;border:none;border-radius:3px;cursor:pointer}
#btn-export-models-modal{background:var(--color-primary);color:#fff}
.modal-entity-right-actions #btn-import-entities{background:var(--color-import);color:#fff}
.modal-entity-right-actions a{font-size:11px;color:#555;text-decoration:none}
.modal-entity-right-actions a:hover{text-decoration:underline}
.modal-model-sort{display:flex;align-items:center;gap:4px;margin-bottom:4px;flex-wrap:wrap}
.modal-model-sort span{font-size:11px;color:#666}
.sort-btn{font-size:11px;padding:2px 7px;background:#f0f0f0;border:1px solid #ccc;border-radius:3px;cursor:pointer;color:#444}
.sort-btn.active{background:var(--color-primary,#2a7);color:#fff;border-color:var(--color-primary,#2a7)}
.sort-btn:hover:not(.active){background:#e0e0e0}
.modal-model-list{max-height:300px;overflow-y:auto;font-size:12px;border-top:1px solid #e0e0e0;padding-top:6px;margin-top:4px}
.modal-model-item{padding:6px 8px;margin-bottom:4px;background:#fff;border:1px solid var(--color-border-light);border-left:3px solid #ccc;cursor:pointer;border-radius:var(--radius-sm)}
.modal-model-item:hover{background:var(--color-bg-hover)}
.modal-model-item-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:2px}
.modal-model-item-name{font-weight:bold;font-size:12px}
.btn-delete-model{background:none;border:none;color:#999;cursor:pointer;font-size:14px;padding:0 4px;line-height:1}
.btn-delete-model:hover{color:#e74c3c}
.modal-model-item-meta{color:var(--color-text-muted);font-size:11px}
.modal-model-item.selected{background:#e8f0fe;border-color:#4a90d9}
.model-select-cb{margin-right:6px;cursor:pointer;flex-shrink:0}
.selection-toolbar{display:flex;align-items:center;gap:8px;padding:6px 4px;margin-bottom:4px;border-bottom:1px solid var(--color-border-light);font-size:12px}
.selection-toolbar label{cursor:pointer}
.btn-delete-selection{padding:3px 10px;font-size:11px;background:#c0392b;color:#fff;border:none;border-radius:3px;cursor:pointer}
.btn-delete-selection:disabled{background:#ccc;cursor:default}
.entity-name-wrapper{position:relative}
.btn-autocomplete-toggle{margin-top:4px;padding:3px 8px;font-size:11px;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-bg,#f5f5f5);color:var(--color-text-muted);cursor:pointer}
.btn-autocomplete-toggle.active{background:var(--color-primary-bg,#e8f4e8);color:var(--color-primary,#2a7a2a);border-color:var(--color-primary,#2a7a2a)}
.entity-name-suggestions{display:none;position:absolute;top:100%;left:0;right:0;z-index:2000;margin:0;padding:0;list-style:none;background:#fff;border:1px solid var(--color-border);border-top:none;border-radius:0 0 var(--radius-sm) var(--radius-sm);box-shadow:var(--shadow-md);max-height:220px;overflow-y:auto}
.entity-name-suggestions.open{display:block}
.entity-name-suggestions li{padding:7px 10px;font-size:13px;cursor:pointer;border-bottom:1px solid var(--color-border-light)}
.entity-name-suggestions li:last-child{border-bottom:none}
.entity-name-suggestions li:hover,.entity-name-suggestions li[aria-selected="true"]{background:var(--color-primary-bg)}
.entity-name-suggestions li .sug-meta{font-size:11px;color:var(--color-text-muted);margin-left:6px}
#entity-form{margin-top:0}
#entity-form label{display:block;margin-top:12px;margin-bottom:4px;font-weight:bold;font-size:13px;color:var(--color-text-light)}
#entity-form input,#entity-form textarea,#entity-form select{width:100%;padding:8px 10px;border:1px solid var(--color-border);border-radius:var(--radius-sm);font-size:13px}
#entity-form textarea{resize:vertical;min-height:60px}
#entity-form input[type="color"]{padding:0;height:32px;width:80px}
#entity-form input[type="checkbox"]{width:auto;margin-right:5px}
#entity-form button{margin-top:18px;padding:9px 18px;border:none;cursor:pointer;font-size:13px;margin-right:8px}
#entity-form button[type="submit"]{background:var(--color-primary);color:#fff}
#entity-form button[type="button"]{background:var(--color-neutral);color:#fff}
#entity-form button:hover{opacity:.9}
#entity-form input:focus,#entity-form textarea:focus,#entity-form select:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 1px var(--color-primary-light)}
#zoom-controls{position:absolute;bottom:30px;right:calc(var(--sidebar-width) + 20px);z-index:1000;display:flex;flex-direction:column;gap:2px}
#zoom-controls button{width:30px;height:30px;border:none;background:#fff;cursor:pointer;font-size:18px;font-weight:bold;box-shadow:var(--shadow-md);transition:background .2s}
#zoom-controls button:hover{background:var(--color-bg-hover)}
.leaflet-control-scale{margin-right:20px!important}
.placement-modal-content{max-width:820px!important;border-top:4px solid var(--color-primary)!important}
#placement-modal h3{margin-bottom:12px;font-size:17px;text-align:center;color:var(--color-text);padding-bottom:8px;border-bottom:1px solid var(--color-border-light)}
.placement-layout{display:flex;gap:18px;align-items:flex-start}
.placement-params{flex:0 0 300px;min-width:0}
.placement-params select,.placement-params input[type="number"]{width:100%;box-sizing:border-box;padding:6px 8px;border:1px solid var(--color-border);border-radius:var(--radius-sm);font-size:13px;margin-bottom:2px}
.placement-section-title{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-muted);margin-bottom:5px;padding-bottom:3px;border-bottom:1px solid var(--color-border-light)}
.placement-checkbox-label{display:flex;align-items:center;gap:6px;font-size:13px;margin:4px 0;cursor:pointer}
.placement-guideline-list{display:flex;flex-direction:column;gap:3px;margin-bottom:2px}
.placement-filters-grid{display:grid;grid-template-columns:auto 1fr;gap:4px 8px;align-items:center;font-size:12px}
.placement-filters-grid label{color:var(--color-text-muted)}
.placement-actions{display:flex;gap:8px;margin-top:14px;padding-top:12px;border-top:1px solid var(--color-border-light)}
.placement-actions button[type="submit"]{flex:1;padding:9px;background:var(--color-primary);color:#fff;border:none;border-radius:var(--radius-sm);cursor:pointer;font-size:13px;font-weight:600}
.placement-actions button[type="submit"]:disabled{background:#ccc;cursor:default}
.placement-actions button[type="button"]{padding:9px 14px;background:transparent;border:1px solid var(--color-border);border-radius:var(--radius-sm);cursor:pointer;font-size:13px;color:var(--color-text-muted)}
.placement-actions button:hover:not(:disabled){opacity:.85}

.placement-species-panel{flex:1;min-width:0;border-left:1px solid var(--color-border-light);padding-left:16px}
.placement-species-count{font-size:12px;color:var(--color-text-muted);margin-bottom:8px;min-height:16px}
.placement-species-list{display:flex;flex-direction:column;gap:4px;max-height:420px;overflow-y:auto}
.placement-species-item{display:flex;align-items:center;gap:8px;padding:6px 8px;background:var(--color-bg-surface);border:1px solid var(--color-border-light);border-radius:var(--radius-sm);transition:opacity .15s}
.placement-species-item.disabled{opacity:.45}
.placement-species-color{width:10px;height:10px;border-radius:50%;flex-shrink:0}
.placement-species-info{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px}
.placement-species-name{font-size:12px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.placement-species-dims{font-size:11px;color:var(--color-text-muted)}
.placement-species-toggle{padding:3px 8px;font-size:11px;font-weight:600;border-radius:3px;cursor:pointer;border:1px solid;flex-shrink:0}
.placement-species-toggle.on{background:var(--color-primary-bg);color:var(--color-primary);border-color:var(--color-primary)}
.placement-species-toggle.off{background:#f5f5f5;color:#999;border-color:#ccc}
.placement-species-toggle:hover{opacity:.8}
#placement-form{margin-top:15px}
#placement-form label{display:block;margin-top:12px;margin-bottom:4px;font-weight:bold;font-size:13px;color:var(--color-text-light)}
#placement-form select,#placement-form input[type="number"]{width:100%;padding:8px 10px;border:1px solid var(--color-border);border-radius:var(--radius-sm);font-size:13px}
#placement-form button{margin-top:18px;padding:9px 18px;border:none;cursor:pointer;font-size:13px;margin-right:8px}
#placement-form button[type="submit"]{background:var(--color-primary);color:#fff}
#placement-form button[type="button"]{background:var(--color-neutral);color:#fff}
#placement-form button:hover{opacity:.9}
#placement-form select:focus,#placement-form input[type="number"]:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 1px var(--color-primary-light)}
.reset-option{width:100%;padding:12px 20px;margin-bottom:10px;border:none;cursor:pointer;font-size:14px;background:var(--color-info);color:#fff;border-radius:var(--radius-sm);transition:background .2s}
.reset-option:hover{background:var(--color-info-dark)}
#btn-reset-all{background:var(--color-danger)}
#btn-reset-all:hover{background:var(--color-danger-dark)}
#btn-cancel-reset{width:100%;padding:10px 20px;border:none;cursor:pointer;font-size:13px;background:var(--color-neutral);color:#fff;border-radius:var(--radius-sm)}
#btn-cancel-reset:hover{opacity:.9}

/* Contrôle Leaflet pour le menu projet (ouvrir/sauvegarder/réinitialiser) */
.haievive-project-control{
	display:flex;
	flex-direction:column;
	padding:4px;
	gap:4px;
}

.haievive-project-control button{
	padding:4px 8px;
	font-size:11px;
	border:none;
	background:#fff;
	cursor:pointer;
	box-shadow:0 1px 2px rgba(0,0,0,.2);
	white-space:nowrap;
}

.haievive-project-control button:hover{
	background:#f0f0f0;
}

/* Modal de démarrage */
#startup-modal{display:none;position:fixed;z-index:9999;inset:0;background:rgba(0,0,0,.6);align-items:center;justify-content:center}
.startup-modal-content{background:#fff;border-radius:12px;padding:40px 32px;text-align:center;box-shadow:0 8px 32px rgba(0,0,0,.3);max-width:460px;width:90%}
.startup-modal-content h2{margin:0 0 8px;font-size:24px;color:var(--color-primary)}
.startup-modal-content>p{margin:0 0 28px;color:var(--color-text-muted)}
.startup-choices{display:flex;gap:16px;justify-content:center}
.startup-choice-btn{flex:1;display:flex;flex-direction:column;align-items:center;gap:6px;padding:24px 16px;border:2px solid var(--color-border);border-radius:10px;background:#fff;cursor:pointer;transition:border-color .2s,background .2s}
.startup-choice-btn:hover{border-color:var(--color-primary);background:var(--color-primary-bg)}
.startup-choice-icon{font-size:36px;line-height:1}
.startup-choice-btn strong{font-size:15px;color:var(--color-text)}
.startup-choice-btn small{font-size:12px;color:var(--color-text-muted)}

/* Bouton calibration — même style que les boutons d'étapes */

/* Modal calibration */
#calibration-modal .modal-content{max-width:680px;border-top:4px solid var(--color-primary)}
#calibration-modal h3{margin-bottom:10px;font-size:18px;text-align:center;color:var(--color-text);padding-bottom:6px;border-bottom:1px solid var(--color-border-light)}
#calibration-osm-map{height:340px;border-radius:var(--radius-sm);border:1px solid var(--color-border-light);background:#e8e8e8;margin-top:6px}
.calib-geo-pt{padding:4px 10px;border-radius:12px;background:var(--color-bg-surface);border:1px solid var(--color-border-light);font-weight:500}
.calib-geo-pt.defined{background:#e6f4ea;border-color:#68bb78;color:#2d7a3a}

/* Widget commune générique (dans modal) */
.commune-search{position:relative;margin-bottom:0}
.commune-search-form{display:flex;align-items:center;gap:6px;position:relative}
.commune-search-input{flex:1;padding:6px 8px;border:1px solid #ccc;border-radius:3px;font-size:13px}
.commune-search-input:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 1px var(--color-primary-light)}
.commune-search-loader{width:14px;height:14px;border-radius:50%;border:2px solid #ccc;border-top-color:var(--color-primary);animation:commune-spin .8s linear infinite;display:none;flex-shrink:0}
.commune-search-suggestions{position:absolute;top:100%;left:0;right:0;background:#fff;border:1px solid #ddd;border-top:none;max-height:180px;overflow-y:auto;box-shadow:0 2px 4px rgba(0,0,0,.2);z-index:3000}

/* Rapport modal */
#rapport-modal .modal-content{
	max-width:520px;
	border-top:4px solid var(--color-primary);
}

#rapport-modal h3{
	margin-bottom:14px;
	font-size:17px;
	text-align:center;
	color:var(--color-text);
	padding-bottom:10px;
	border-bottom:1px solid var(--color-border-light);
}

.rapport-project-name-row{
	margin-bottom:18px;
}

.rapport-project-name-row label{
	display:block;
	font-size:12px;
	font-weight:700;
	text-transform:uppercase;
	letter-spacing:.05em;
	color:var(--color-text-muted);
	margin-bottom:5px;
}

.rapport-project-name-row input{
	width:100%;
	padding:8px 10px;
	border:1px solid var(--color-border);
	border-radius:var(--radius-sm);
	font-size:13px;
	box-sizing:border-box;
}

.rapport-project-name-row input:focus{
	outline:none;
	border-color:var(--color-primary);
	box-shadow:0 0 0 1px var(--color-primary-light);
}

.rapport-section-title{
	font-size:11px;
	font-weight:700;
	text-transform:uppercase;
	letter-spacing:.06em;
	color:var(--color-text-muted);
	margin-bottom:10px;
	padding-bottom:4px;
	border-bottom:1px solid var(--color-border-light);
}

.rapport-raw-btns{
	display:flex;
	gap:10px;
	margin-bottom:20px;
}

.rapport-raw-btn{
	flex:1;
	display:flex;
	align-items:center;
	justify-content:center;
	gap:7px;
	padding:10px 12px;
	background:var(--color-bg-surface);
	border:1px solid var(--color-border);
	border-radius:var(--radius-sm);
	cursor:pointer;
	font-size:13px;
	font-weight:600;
	color:var(--color-text);
	transition:background .15s,border-color .15s;
}

.rapport-raw-btn:hover{
	background:var(--color-bg-hover);
	border-color:var(--color-primary);
	color:var(--color-primary);
}

.rapport-btn-icon{font-size:14px}
.rapport-btn-label{font-size:12px}

#rapport-form{margin-top:0}

.rapport-params-grid{
	display:grid;
	grid-template-columns:repeat(3,1fr);
	gap:10px;
	margin-bottom:4px;
}

.rapport-param{min-width:0}

.rapport-param label{
	display:block;
	font-size:11px;
	font-weight:600;
	color:var(--color-text-muted);
	margin-bottom:5px;
}

.rapport-input-group{
	display:flex;
	align-items:center;
	gap:5px;
}

.rapport-input-group input[type="number"]{
	flex:1;
	min-width:0;
	padding:7px 8px;
	border:1px solid var(--color-border);
	border-radius:var(--radius-sm);
	font-size:13px;
}

.rapport-input-group input[type="number"]:focus{
	outline:none;
	border-color:var(--color-primary);
	box-shadow:0 0 0 1px var(--color-primary-light);
}

.rapport-unit{
	font-size:11px;
	font-weight:600;
	color:var(--color-text-muted);
	background:var(--color-bg-surface);
	border:1px solid var(--color-border);
	border-radius:var(--radius-sm);
	padding:4px 6px;
	white-space:nowrap;
}

.rapport-actions{
	display:flex;
	gap:10px;
	margin-top:16px;
	padding-top:14px;
	border-top:1px solid var(--color-border-light);
}

.rapport-btn-primary{
	flex:1;
	padding:10px 16px;
	background:var(--color-primary);
	color:#fff;
	border:none;
	border-radius:var(--radius-sm);
	cursor:pointer;
	font-size:13px;
	font-weight:600;
}

.rapport-btn-secondary{
	padding:10px 16px;
	background:transparent;
	color:var(--color-text-muted);
	border:1px solid var(--color-border);
	border-radius:var(--radius-sm);
	cursor:pointer;
	font-size:13px;
}

.rapport-btn-primary:hover,.rapport-btn-secondary:hover{opacity:.85}

/* Liste des lignes directrices dans la sidebar */
#guideline-list {
    display: flex;
    flex-direction: column;
    gap: 0.25em;
    font-size: 13px;
}
.guideline-toggle-labels-btn {
    width: 100%;
    margin-bottom: 0.3em;
    font-size: 12px;
    padding: 6px 10px;
    background: var(--color-primary);
    color: #fff;
    border: none;
    border-radius: var(--radius-sm);
    cursor: pointer;
    font-weight: 600;
}
.guideline-toggle-labels-btn:hover {
    opacity: .88;
}
.guideline-list-empty {
    color: #888;
    margin: 0;
    font-style: italic;
}
.guideline-item {
    display: flex;
    align-items: center;
    gap: 0.3em;
    padding: 0.25em 0.4em;
    border-radius: 4px;
    background: #f5f5f5;
    border: 1px solid #ddd;
    border-left: 4px solid #ccc;
}
.guideline-item-color {
    width: 22px;
    height: 22px;
    padding: 0;
    border: none;
    border-radius: 3px;
    cursor: pointer;
    flex-shrink: 0;
    background: none;
}
.guideline-item.locked {
    background: #efefef;
    border-color: #bbb;
    opacity: 0.8;
}
.guideline-item-name {
    flex: 1;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    cursor: default;
}
.guideline-item-btn {
    font-size: 11px;
    padding: 0.1em 0.35em;
    cursor: pointer;
    flex-shrink: 0;
}
.guideline-item-btn-delete {
    color: #c00;
    border-color: #c00;
}
.guideline-item-btn-delete:hover {
    background: #c00;
    color: #fff;
}
.guideline-rename-input {
    flex: 1;
    font-size: 12px;
    padding: 0.1em 0.3em;
    border: 1px solid #c00;
    border-radius: 3px;
    min-width: 0;
}

/* Guideline labels on map */
.guideline-label-text{
	background:#fff;
	padding:4px 8px;
	border:2px solid #ff0000;
	border-radius:var(--radius-md);
	font-size:11px;
	color:#ff0000;
	white-space:nowrap;
	box-shadow:var(--shadow-md);
	text-align:center;
	line-height:1.3;
}

/* ── Notifications (Error / Success) ──────────────────────────── */
.app-notification{
	position:fixed;
	top:20px;
	right:20px;
	color:#fff;
	padding:15px 20px;
	border-radius:var(--radius-md);
	box-shadow:var(--shadow-lg);
	z-index:10000;
	max-width:400px;
	white-space:pre-line;
	transition:opacity .3s;
}
.app-notification--error{background:var(--color-danger)}
.app-notification--success{background:var(--color-primary)}
.app-notification--info{background:var(--color-info)}
.app-notification--fade{opacity:0}

/* ── Measure tooltip ──────────────────────────────────────── */
.measure-tooltip-text{
	background:#fff;
	padding:4px 8px;
	border:1px solid #0000ff;
	border-radius:var(--radius-md);
	font-size:12px;
}

/* ── Utilitaires ─────────────────────────────────────────── */
.hidden{display:none}

/* ── Sidebar toggle (mobile) ─────────────────────────────── */
#sidebar-toggle{
	display:none;
	position:absolute;
	top:10px;
	right:10px;
	z-index:1100;
	width:40px;
	height:40px;
	border:none;
	background:#fff;
	font-size:22px;
	cursor:pointer;
	border-radius:var(--radius-md);
	box-shadow:var(--shadow-md);
	line-height:40px;
	text-align:center;
}
#sidebar-toggle:hover{background:var(--color-bg-hover)}
#sidebar-toggle:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}

/* ── Confirm modal ───────────────────────────────────────── */
.confirm-modal-content{
	max-width:420px;
	border-top:4px solid var(--color-danger);
	text-align:center;
}
.confirm-modal-title{
	margin-bottom:12px;
	font-size:18px;
	color:var(--color-text);
	padding-bottom:6px;
	border-bottom:1px solid var(--color-border-light);
}
.confirm-modal-message{
	margin-bottom:20px;
	font-size:14px;
	color:var(--color-text-light);
	line-height:1.5;
}
.confirm-modal-actions{
	display:flex;
	gap:10px;
	justify-content:center;
}
.confirm-modal-btn{
	padding:10px 24px;
	border:none;
	border-radius:var(--radius-sm);
	cursor:pointer;
	font-size:14px;
	transition:opacity .2s;
}
.confirm-modal-btn:hover{opacity:.9}
.confirm-modal-btn:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}
.confirm-modal-btn--danger{background:var(--color-danger);color:#fff}
.confirm-modal-btn--info{background:var(--color-info);color:#fff}
.confirm-modal-btn--cancel{background:var(--color-neutral);color:#fff}

/* ── Undo / Redo controls ────────────────────────────────── */
#undo-redo-controls{
	z-index:1000;
	display:flex;
	gap:2px;
}
#undo-redo-controls button{
	width:34px;
	height:34px;
	border:none;
	background:#fff;
	cursor:pointer;
	font-size:18px;
	box-shadow:var(--shadow-md);
	transition:background .2s;
	border-radius:var(--radius-sm);
}
#undo-redo-controls button:hover:not(:disabled){background:var(--color-bg-hover)}
#undo-redo-controls button:disabled{opacity:.4;cursor:default}
#undo-redo-controls button:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}

/* ── Focus-visible global ────────────────────────────────── */
button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,[tabindex]:focus-visible{
	outline:2px solid var(--color-primary);
	outline-offset:2px;
}
.close:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}

/* ── Entity items keyboard ───────────────────────────────── */
.entity-item:focus{outline:2px solid var(--color-primary);outline-offset:-2px;background:var(--color-primary-bg)}

/* ── Responsive (< 800px) ────────────────────────────────── */
@media (max-width:800px){
	#sidebar-toggle{display:block}
	#sidebar{
		position:fixed;
		top:0;right:0;bottom:0;
		width:85vw;
		max-width:400px;
		transform:translateX(100%);
		transition:transform .3s ease;
		z-index:1200;
	}
	#sidebar.sidebar--open{transform:translateX(0)}
	#map{right:0!important}
	#zoom-controls{right:15px!important}
	#undo-redo-controls{left:10px}
	#controls{
		position:absolute;
		top:auto;
		bottom:10px;
		left:50%;
		transform:translateX(-50%);
		flex-direction:row;
		flex-wrap:wrap;
		justify-content:center;
		max-width:95vw;
		padding:8px;
		gap:4px;
		background:rgba(255,255,255,.85);
	}
	#controls center{display:none}
	#controls br{display:none}
	#controls button{font-size:11px;padding:6px 8px;white-space:nowrap}
	.modal-content{width:95%!important;margin:10% auto!important;max-height:85vh;overflow-y:auto}
	.rapport-params-grid{grid-template-columns:repeat(3,1fr)}
	.rapport-raw-btns{flex-direction:row}
	.placement-layout{flex-direction:column}
	.placement-params{flex:none;width:100%}
	.placement-species-panel{border-left:none;border-top:1px solid var(--color-border-light);padding-left:0;padding-top:12px}
	.placement-species-list{max-height:240px}
	.modal-entity-columns{flex-direction:column}
	.modal-entity-right{border-left:none;border-top:1px solid var(--color-border-light);padding-left:0;padding-top:10px;margin-top:10px}
	#commune-search{width:90%}
	/* Overlay pour fermer sidebar en cliquant à côté */
	.sidebar-overlay{
		display:none;
		position:fixed;
		top:0;left:0;right:0;bottom:0;
		background:rgba(0,0,0,.3);
		z-index:1150;
	}
	.sidebar-overlay--visible{display:block}
}

/* ── Responsive (< 500px) ────────────────────────────────── */
@media (max-width:500px){
	#controls{
		bottom:5px;
		padding:6px;
	}
	#controls button{font-size:10px;padding:5px 6px}
	#controls h3{display:none}
	.rapport-params-grid{grid-template-columns:1fr}
	.rapport-raw-btns{flex-direction:column}
	.rapport-actions{flex-direction:column}
	.rapport-btn-primary,.rapport-btn-secondary{width:100%;text-align:center}
}

/* ── Entity section header (sidebar) ──────────────────────── */
.entity-section-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}
.entity-section-header-title{margin:0}
.entity-section-header-actions{display:flex;gap:5px}
.entity-export-btn{padding:5px 10px;font-size:12px}

/* ── Pagination « Voir plus » ─────────────────────────────── */
.entity-load-more{
	display:block;
	width:100%;
	padding:10px;
	margin-top:8px;
	border:1px dashed var(--color-border);
	background:var(--color-bg-alt);
	color:var(--color-text-muted);
	cursor:pointer;
	font-size:12px;
	text-align:center;
	border-radius:var(--radius-sm);
	transition:background .2s;
}
.entity-load-more:hover{background:var(--color-bg-hover)}
