:root{font-family:Inter,ui-sans-serif,system-ui,-apple-system,Segoe UI,Arial;color:#e8f0ff;background:#081120;font-size:16px}*{box-sizing:border-box}body{margin:0}button,input,textarea{font:inherit}button{cursor:pointer;background:linear-gradient(110deg,#24bfbf,#6b62eb);color:white;border:0;border-radius:12px;padding:12px 17px;font-weight:700}button:hover{filter:brightness(1.14)}a{color:#57e2e3}.app{display:flex;min-height:100vh}.sidebar{width:255px;background:#0d1930;border-right:1px solid #283755;flex:none;display:flex;flex-direction:column;padding:26px 16px;position:sticky;top:0;height:100vh}.logo{width:216px;margin-bottom:38px}.small,.eyebrow{font-size:.74rem;letter-spacing:2px;color:#7896b6;font-weight:800}.sidebar .small{padding:0 14px;margin-bottom:14px}nav{display:grid;gap:7px}nav button{width:100%;background:transparent;text-align:left;color:#adc4df;font-weight:650;padding:14px 16px;border-radius:12px}nav button.active,nav button:hover{background:#1c3255;color:#64e6e3}.sidebar-footer{margin-top:auto;display:grid;gap:16px;padding:12px}.sidebar-footer a{font-size:.9rem;color:#adc4df}.content{width:calc(100% - 255px);padding:28px 30px;max-width:1900px;margin:auto}header{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:25px}h1{font-size:2rem;margin:8px 0 0}h2{font-size:1.1rem;margin:0 0 8px}p{line-height:1.55;color:#a0b5cf}.pill{display:inline-block;border:1px solid #2b5060;background:#122e38;color:#74d6cf;padding:9px 13px;border-radius:999px;font-size:.8rem}.metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:15px;margin-bottom:18px}.metrics article,.panel{background:#101e35;border:1px solid #263b5b;border-radius:18px}.metrics article{padding:20px;display:grid;gap:8px}.metrics span{color:#b2c4da;font-weight:650}.metrics strong{font-size:2rem;color:#f3f8ff}.metrics small{color:#7192ad}.page{display:none}.page.active{display:grid;gap:18px}.two{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(290px,1fr);gap:18px}.stack{display:grid;gap:18px}.panel{padding:21px;min-width:0}.panel-title{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:13px}.panel-title p{margin:0;font-size:.85rem}.light{background:#233657;color:#d1e3fa;font-size:.84rem}.map{height:470px;border-radius:13px;background:#17233a;overflow:hidden}.map.large{height:62vh;min-height:450px}.legend{font-size:.8rem;color:#87a2bc;margin:12px 0 0}.report{padding:15px;background:#142641;border-radius:12px;line-height:1.6;overflow-wrap:anywhere}.muted{color:#91a9c3}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.form-grid label{display:grid;gap:7px;color:#b7cbe1;font-weight:650}.form-grid button,.form-grid label:has(textarea){grid-column:1/-1}input,textarea{background:#0b182d;border:1px solid #345174;color:#eff6ff;border-radius:10px;padding:12px;min-width:0;width:100%}input:focus,textarea:focus{outline:2px solid #32cbc9}.check{display:flex!important;align-items:center;gap:10px}.check input{width:19px;height:19px}.inline{display:flex;gap:10px}.inline input{max-width:320px}.chips{display:flex;gap:9px;flex-wrap:wrap;margin:15px 0}.chip{display:flex;gap:6px;align-items:center;border:1px solid #345174;border-radius:20px;padding:6px 10px}.chip button{font-size:.8rem;padding:7px}.table-scroll{overflow-x:auto;margin-top:15px}table{border-collapse:collapse;width:100%;font-size:.88rem}th,td{padding:12px;border-bottom:1px solid #263c5a;text-align:left;white-space:nowrap}th{color:#9ab1c9}td{color:#e0ecfa}td button{padding:6px 10px}.jobs{display:grid;gap:12px}.job{background:#142641;padding:12px;border-radius:12px}.progress{background:#253651;border-radius:8px;height:7px;margin-top:10px;overflow:hidden}.progress div{height:100%;background:linear-gradient(90deg,#20c9c6,#8b6fff)}.alert{padding:14px;background:#483a25;border:1px solid #796038;color:#ffe5ad;border-radius:12px;margin:15px 0}footer{margin:26px 0;color:#7890a8;font-size:.75rem}#toast{position:fixed;bottom:25px;right:25px;background:#243b58;color:white;padding:13px 18px;border-radius:12px;opacity:0;pointer-events:none;transition:opacity .2s;max-width:80vw;z-index:9999}#toast.show{opacity:1}.installer{width:min(550px,92vw);margin:8vh auto;background:#101e35;border:1px solid #2b4361;border-radius:23px;padding:30px}.installer img{max-width:90%}.installer h1{font-size:1.55rem;margin-top:25px}.installer .form-grid{grid-template-columns:1fr}.plane-dot{background:transparent!important;border:0!important;font-size:21px;text-shadow:0 2px 8px #071326;color:#28c9cd}.leaflet-popup-content-wrapper,.leaflet-popup-tip{background:#172941!important;color:#e5f3ff!important}.leaflet-popup-content button{margin-top:8px;font-size:.8rem}
@media(max-width:1050px){.two{grid-template-columns:1fr}.metrics{grid-template-columns:repeat(2,1fr)}.sidebar{width:215px}.content{width:calc(100% - 215px);padding:22px}.logo{width:185px}}@media(max-width:740px){.app{display:block}.sidebar{position:relative;width:100%;height:auto;padding:13px 14px}.sidebar .small,.sidebar-footer{display:none}.logo{width:170px;margin:0 0 12px}.sidebar nav{display:flex;overflow-x:auto;gap:7px;scrollbar-width:thin}.sidebar nav button{white-space:nowrap;width:auto;flex:none;padding:11px 13px;font-size:.86rem}.content{width:100%;padding:18px 13px calc(18px + env(safe-area-inset-bottom))}header{align-items:start;flex-direction:column}h1{font-size:1.6rem}.metrics{gap:9px}.metrics article{padding:14px}.metrics strong{font-size:1.6rem}.metrics span{font-size:.82rem}.panel{padding:15px}.map{height:390px}.map.large{height:60vh;min-height:400px}.form-grid{grid-template-columns:1fr}.panel-title{flex-wrap:wrap}.panel-title label{width:100%}.inline{flex-wrap:wrap}.installer{margin:20px auto;padding:20px}}

.military-dot{color:#ffa43a!important;text-shadow:0 2px 8px #582a06}select{background:#0b182d;border:1px solid #345174;color:#eff6ff;border-radius:10px;padding:12px;width:100%;font:inherit}
.weather-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:12px 0}.weather-tile{background:#1c3553;border:1px solid #335376;padding:15px;border-radius:13px;display:grid;gap:7px}.weather-tile span{color:#8fd6dd;font-size:.9rem}.weather-tile strong{font-size:1.03rem;line-height:1.4}.raw-weather{margin-top:16px;border-top:1px solid #345174;padding-top:12px}.raw-weather summary{cursor:pointer;color:#8ddce1}.raw-weather code{display:block;white-space:normal;margin-top:12px}.airport-results{display:grid;gap:9px;margin:18px 0}.airport-item{display:flex;align-items:flex-start;flex-direction:column;gap:4px;text-align:left;background:#1b3454;border:1px solid #355274}.airport-item span{font-weight:400;font-size:.89rem;color:#b6cce2}.airport-card{margin-top:18px;padding:18px;background:#142641;border-radius:15px}.airport-card h3{margin:25px 0 8px}@media(max-width:600px){.weather-grid{grid-template-columns:1fr}}

/* v0.3.3 : fenêtres de détail et retour visible d'activité */
[hidden]{display:none!important}
.modal-open{overflow:hidden}
.modal-backdrop{position:fixed;inset:0;z-index:9999;background:rgba(3,10,24,.84);display:flex;justify-content:center;align-items:center;padding:15px}
.modal-dialog{background:#112039;border:1px solid #375170;border-radius:18px;color:#ecf5ff;width:min(800px,100%);max-height:92dvh;overflow:auto;box-shadow:0 20px 85px #0009}
.modal-heading{position:sticky;top:0;z-index:2;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:18px 22px;background:#112039;border-bottom:1px solid #334965}
.modal-heading h2{margin:0;font-size:1.35rem}.modal-body{padding:20px 22px}.modal-actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:20px}
.detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.detail-line{background:#1b314f;border:1px solid #345473;border-radius:10px;padding:13px;display:flex;flex-direction:column;gap:6px;overflow-wrap:anywhere}
.detail-line span{font-size:.85rem;color:#a9d0ed}.detail-line strong{font-size:1rem;color:#fff}
.clickable-row{cursor:pointer}.clickable-row:hover{background:#1d3858}
.request-progress{position:fixed;bottom:16px;left:50%;transform:translateX(-50%);z-index:11000;background:#162e4c;border:1px solid #47739a;border-radius:12px;padding:12px 16px;box-shadow:0 8px 30px #0008;width:min(390px,calc(100% - 24px));color:white;font-weight:600}
.request-track{height:6px;border-radius:8px;margin-top:9px;background:#35506d;overflow:hidden}.request-track>div{width:40%;height:100%;border-radius:8px;background:linear-gradient(90deg,#27c7c8,#9061ff)}
.request-running .request-track>div{animation:request-move 1.1s infinite alternate ease-in-out}@keyframes request-move{from{transform:translateX(-25%)}to{transform:translateX(180%)}}
@media(max-width:650px){.modal-backdrop{padding:6px}.modal-dialog{max-height:96dvh}.modal-heading,.modal-body{padding:14px}.detail-grid{grid-template-columns:1fr}.modal-actions button{width:100%}}

.service-card{background:#172d49;border:1px solid #34516f;border-radius:14px;padding:18px;margin:14px 0;display:block}.service-heading{display:flex;gap:12px;align-items:center;justify-content:space-between;flex-wrap:wrap}.service-heading strong{font-size:1.15rem}.service-heading span{font-size:.88rem;color:#a9c5df}.service-fields{display:grid;grid-template-columns:repeat(auto-fit,minmax(175px,1fr));gap:12px;margin:14px 0}.service-fields label{display:flex;flex-direction:column;gap:7px}.service-fields input[type=checkbox]{width:22px;height:22px}.service-fields input[type=number]{width:100%}.aircraft-photo{max-width:300px;max-height:190px;object-fit:cover;border-radius:12px;margin:10px 0}.enrichment{border-top:1px solid #35506d;margin-top:22px;padding-top:15px}

/* ATC Live */
.atc-cards{display:grid;gap:12px;margin:14px 0}.atc-card,.atc-player{display:grid;gap:12px;background:#172d49;border:1px solid #34516f;border-radius:14px;padding:16px}.atc-card p{margin:3px 0}.atc-buttons{display:flex;flex-wrap:wrap;gap:10px;align-items:center}.atc-external{background:#233657;color:#b9f3f6;padding:11px 15px;border-radius:10px;font-weight:700;text-decoration:none}.atc-player{margin-top:10px}.atc-player audio{width:100%;min-height:54px}.atc-card strong{font-size:1.1rem}@media(min-width:900px){.atc-card{grid-template-columns:minmax(0,1fr) auto;align-items:center}}

/* FlightScope 0.4.2 - couche aéroports */
.airport-map-controls{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:10px 0;position:relative;font-size:14px}
.airport-map-switch{display:flex;align-items:center;gap:7px;cursor:pointer;font-weight:700}
.airport-map-switch input,.airport-map-options input{width:18px;height:18px;accent-color:#34c6e3}
.airport-map-options{position:absolute;z-index:1100;top:100%;left:0;background:#172b46;border:1px solid #427198;padding:14px;border-radius:12px;box-shadow:0 10px 30px #0007;display:grid;gap:12px;min-width:230px}
.airport-map-options[hidden]{display:none}
.airport-map-options label{display:flex;align-items:center;gap:8px;cursor:pointer}
.airport-map-count{font-size:12px;color:#9cc4d9}
.airport-pin{background:transparent!important;border:0!important}
.airport-pin span{display:grid;place-items:center;width:24px;height:24px;border-radius:50%;color:#071e32;background:#eecb60;border:2px solid #fff;box-shadow:0 2px 9px #0009;font-weight:900;font-size:13px}
@media(max-width:600px){.airport-map-controls{font-size:13px}.airport-map-options{max-width:calc(100vw - 30px)}}

/* V0.4.3 – Squawk et navigation vers les aéronefs */
.squawk-group{padding:12px 0;border-bottom:1px solid rgba(145,178,218,.17)}
.squawk-group:last-child{border-bottom:0;padding-bottom:0}
.squawk-heading,.squawk-flight{display:flex;justify-content:space-between;gap:12px;align-items:center;flex-wrap:wrap}
.squawk-heading small,.squawk-flight small{display:block;color:#a3c6e8;font-size:.85em;margin-top:4px}
.squawk-flight{margin-top:9px;padding:9px 10px;border:1px solid rgba(140,175,215,.23);border-radius:10px}
.squawk-flight>div{min-width:0;overflow-wrap:anywhere}
.table-actions{display:flex;flex-wrap:wrap;gap:6px}
.locate-button{white-space:nowrap;min-height:36px;cursor:pointer}
#home-squawk.report{padding:12px 15px}
