#map{overflow:hidden;position:relative}#map>.cesium-viewer{width:100%;height:100%}.cesium-viewer-bottom{max-width:90%;font-size:10px}.cesium-widget-credits{font-size:10px!important}.particle-tools{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin:10px 0}.particle-tools .check-row{margin:0;flex:1 1 auto;min-width:170px;font-size:14px}.particle-tools button{min-height:44px;font-size:14px;flex:1 1 110px}.particle-tools+.map-guidance{font-size:13px;line-height:1.8}.cesium-brand{position:absolute;left:12px;bottom:40px;z-index:300;background:#ffffffd9;color:#2c5d50;padding:5px 9px;border-radius:4px;font-size:12px;pointer-events:none}.map-loading{padding:80px 20px;line-height:1.8;color:#315e4e}@media(max-width:480px){.particle-tools .check-row{flex-basis:100%}.particle-tools button{flex:1 1 calc(50% - 10px)}}

.cesium-map-tools{position:absolute;right:10px;top:62px;display:flex;flex-direction:column;gap:7px;z-index:1100}.cesium-map-tools button{min-height:38px;padding:7px 10px;font-size:13px;background:#fffffff0;box-shadow:0 1px 5px #203c3a22;border:1px solid #9db8a9;border-radius:5px;color:#2d5e4b}

/* Map workspace: primary map with a separately scrolling parameter panel. */
.plume-reference{height:100dvh;display:flex;flex-direction:column;overflow:hidden}
.plume-reference>header{flex:0 0 auto;padding:10px 20px}
.plume-reference>main{flex:1 1 auto;min-height:0;max-width:none;width:100%;padding:0}
.plume-reference .map-layout{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:0;height:100%;margin:0}
.plume-reference .map-panel{grid-column:1;grid-row:1;min-width:0;min-height:0;height:100%;position:relative}
.plume-reference aside{grid-column:2;grid-row:1;min-width:0;min-height:0;overflow-y:auto;padding:20px;border:0;border-left:1px solid #d5e2dd;border-radius:0;margin:0}
.plume-reference #map{height:100%!important;min-height:0;border:0;border-radius:0}
.plume-reference .page-heading{margin:0 0 18px;padding:0}
.plume-reference .page-heading h1{font-size:24px;line-height:1.35;margin:8px 0}
.plume-reference .page-heading p{font-size:14px;line-height:1.7;margin:8px 0}
.plume-reference .page-heading>span{font-size:11px;letter-spacing:1px}
.plume-reference aside label{font-size:14px}
.plume-reference aside p,.plume-reference aside details{font-size:14px;line-height:1.7}
.plume-reference aside input[type=range]{width:100%;min-height:36px}
.plume-reference aside select,.plume-reference aside button{min-height:44px;font-size:14px}
.plume-reference .particle-tools{gap:8px}
.plume-reference .particle-tools .check-row{flex-basis:100%}
.plume-reference .particle-tools button{flex:1 1 calc(50% - 8px);min-width:0}
.plume-reference>footer{flex:0 0 auto;padding:7px 16px;font-size:11px;line-height:1.5}
.plume-reference.map-expanded #map{position:fixed!important;inset:0;height:100dvh!important;width:100vw!important}
@media(max-width:850px){
 .plume-reference{height:auto;min-height:100dvh;overflow:auto}
 .plume-reference>header{padding:10px 12px}
 .plume-reference>main{flex:none}
 .plume-reference .map-layout{display:flex;flex-direction:column;height:auto}
 .plume-reference .map-panel{order:0;height:70dvh;min-height:360px;max-height:760px;flex:none}
 .plume-reference aside{order:1;overflow:visible;height:auto;padding:20px 16px;border-left:0;border-top:1px solid #d5e2dd}
 .plume-reference aside p,.plume-reference aside details{font-size:15px}
 .plume-reference>footer{padding:12px 16px}
}

/* Native modal stays above an expanded map and restores keyboard focus on close. */
#reactorDialog{padding:0;border:1px solid #b6cec4;border-radius:14px;width:min(640px,calc(100vw - 24px));max-height:calc(100dvh - 32px);color:#214b49;background:#fff;overflow:hidden;box-shadow:0 18px 80px #102c3955}
#reactorDialog::backdrop{background:#163c4c66}
.dialog-toolbar{display:flex;align-items:center;justify-content:space-between;padding:12px 18px;border-bottom:1px solid #d8e5dd;background:#f4f8f5;gap:16px}
.dialog-toolbar button{min-width:84px;background:white}
#reactorDialog .detail{border:0;border-radius:0;margin:0;padding:20px;max-height:calc(100dvh - 120px);overflow:auto;overscroll-behavior:contain}
#reactorDialog .detail h2{font-size:22px;line-height:1.5;overflow-wrap:anywhere}
#reactorDialog .detail dl{font-size:15px;line-height:1.65;grid-template-columns:110px minmax(0,1fr)}
#reactorDialog .note{font-size:14px}
.reactor-workspace .reactor-list{max-height:none;overflow:visible}
.reactor-workspace aside .note{font-size:13px}
@media(max-width:480px){#reactorDialog .detail{padding:16px}#reactorDialog .detail dl{grid-template-columns:90px minmax(0,1fr);gap:10px}.dialog-toolbar{padding:10px 16px}.reactor-workspace .reactor-list{max-height:420px;overflow:auto}}
@media(min-width:851px){.plume-reference aside{height:100%;align-self:stretch}}

.flow-settings{display:flex;gap:8px;margin:12px 0}.flow-settings label{flex:1 1 0;min-width:0;margin:0;font-size:13px}.flow-settings select{margin-top:7px;padding:9px 6px;min-height:44px}
.base-map-control{position:absolute;right:10px;bottom:24px;z-index:1100;display:flex;align-items:center;gap:8px;padding:5px 9px;background:#fffffff2;border:1px solid #9db8a9;border-radius:7px;box-shadow:0 2px 8px #203c3a22;max-width:calc(100% - 20px)}
.base-map-control label{font-size:13px!important;margin:0}.base-map-control select{width:auto;min-height:36px;font-size:14px;padding:5px 24px 5px 7px;background:white}
.cesium-startup{position:absolute;inset:0;z-index:800;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:32px;background:#e8f0edf0;font-size:17px;gap:12px;pointer-events:none;text-align:center}.cesium-startup small{font-size:14px;line-height:1.7;max-width:260px}
@media(max-width:480px){.base-map-control{bottom:24px;right:8px;gap:5px;padding:4px 7px}.base-map-control select{max-width:150px}}
/* Remove the document scrollbar while the map occupies the entire screen. */
html:has(body.map-expanded){overflow:hidden}
.plume-reference.map-expanded{height:100dvh;overflow:hidden}

.map-load-feedback{position:absolute;left:12px;top:108px;z-index:1250;max-width:calc(100% - 120px);padding:10px 12px;background:#fffffff5;color:#214b49;border-radius:7px;box-shadow:0 2px 10px #203c3a26;font:14px/1.6 system-ui;pointer-events:auto}
.map-load-feedback button{display:block;margin-top:8px;min-height:44px;background:white;width:100%}.map-load-feedback.is-loading span::before{content:' ';display:inline-block;width:12px;height:12px;border:2px solid #c4d8cf;border-top-color:#21785e;border-radius:50%;margin-right:7px;animation:map-load-spin 1s linear infinite}@keyframes map-load-spin{to{transform:rotate(360deg)}}
.plume-zoom-tools{position:absolute;left:12px;top:12px;z-index:1200;display:flex;flex-direction:column;gap:4px}.plume-zoom-tools button{width:44px;height:44px;padding:0;background:#fffffff2;font-size:24px;line-height:1;border:1px solid #89a99b}
.leaflet-touch .leaflet-bar a{width:42px;height:42px;line-height:42px;font-size:26px}
html:has(body.map-dialog-open){overflow:hidden}.map-dialog-open{overflow:hidden!important}
#reactorDialog{max-height:calc(100dvh - 24px - env(safe-area-inset-top) - env(safe-area-inset-bottom));display:none;flex-direction:column}
#reactorDialog[open]{display:flex}.dialog-toolbar{flex:0 0 auto}#reactorDialog .detail{min-height:0;flex:1 1 auto;max-height:none;overflow-y:auto;touch-action:pan-y}
@media(prefers-reduced-motion:reduce){.map-load-feedback.is-loading span::before{animation:none}}

/* Expanded plume map: the same parameters stay within reach of one hand. */
.plume-live-controls{display:none;position:absolute;left:12px;right:12px;bottom:82px;z-index:1300;margin:0;max-width:400px;max-height:45dvh;border:1px solid #94b8a7;border-radius:10px;background:#fffffff5;box-shadow:0 4px 18px #193a3c26;overflow-y:auto;overscroll-behavior:contain;color:#214b49}
.map-expanded .plume-live-controls{display:block}
.plume-live-controls>summary{position:sticky;top:0;z-index:1;min-height:44px;padding:11px 14px;background:#edf5ef;color:#1b6450;font-size:15px;line-height:22px;cursor:pointer}
.plume-live-controls>summary::after{content:'展开调节';float:right;font-size:13px}.plume-live-controls[open]>summary::after{content:'收起面板'}
.plume-live-body{padding:4px 14px 12px}.plume-live-body label{display:flex;justify-content:space-between;align-items:center;gap:12px;margin:8px 0 0;font-size:15px;line-height:1.4}.plume-live-body output{display:inline;margin:0;font-size:14px;color:#176a55}.plume-live-body input[type=range]{display:block;width:100%;min-height:36px;margin:0;touch-action:pan-y}
.plume-live-actions{display:flex;gap:8px;margin-top:6px}.plume-live-actions button{flex:1 1 0;min-width:0;min-height:44px;font-size:14px;padding:8px}
@media(max-width:480px){.plume-live-controls{left:8px;right:8px}}

.reactor-live-controls{max-height:55dvh}.reactor-live-controls>summary::after{content:'展开筛选'}
.reactor-live-body{padding:4px 14px 12px}.reactor-live-body label{font-size:14px;margin:10px 0 5px}.reactor-live-body input[type=search],.reactor-live-body select{font-size:16px;min-height:44px;padding:9px 10px}
.reactor-live-count{font-size:14px;line-height:1.6;margin:10px 0 4px}.reactor-live-results{max-height:160px;overflow-y:auto;overscroll-behavior:contain}
.reactor-live-results button{display:block;width:100%;text-align:left;border:0;border-bottom:1px solid #d8e5dc;border-radius:0;background:transparent;padding:10px 2px;min-height:44px;font-size:14px;line-height:1.5}.reactor-live-results small{display:block;font-size:12px;color:#527267;line-height:1.6;margin-top:4px}.reactor-live-results p{font-size:14px;line-height:1.6;margin:8px 0}.reactor-live-more{width:100%;margin-top:8px}
@media(max-height:500px){.reactor-live-controls{max-height:45dvh}}
.reactor-live-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 8px}.reactor-live-fields>div{min-width:0}.reactor-live-fields>div:first-child{grid-column:1/-1}

/* Start with one compact handle; expand only when the user needs the controls. */
.plume-live-controls,.reactor-live-controls{max-height:min(45dvh,var(--panel-visible-height,45dvh))}
.plume-live-controls>summary{font-size:14px;padding:10px 12px;line-height:24px;white-space:nowrap}.plume-live-controls>summary::after{font-size:12px;margin-left:8px}
.reactor-results-disclosure{margin:6px 0 0}.reactor-results-disclosure>summary{min-height:44px;padding:10px 0;font-size:14px;line-height:24px;color:#176a55}
.reactor-live-results{max-height:120px}.reactor-live-count{margin:8px 0 0}
.plume-live-controls.keyboard-visible{bottom:calc(var(--panel-keyboard-gap,0px) + 12px);max-height:var(--panel-visible-height);z-index:1400}

/* Keep compact handles clear of gesture areas and visible in short landscape views. */
.plume-live-controls{bottom:max(82px,calc(env(safe-area-inset-bottom) + 66px))}
.plume-live-controls>summary{overflow:hidden;text-overflow:ellipsis}
@media(max-height:500px) and (min-width:600px){.plume-live-controls{left:70px;right:110px;max-width:360px;bottom:max(66px,calc(env(safe-area-inset-bottom) + 52px));max-height:min(45dvh,var(--panel-visible-height,45dvh))}}
.plume-live-controls.keyboard-visible{bottom:calc(var(--panel-keyboard-gap,0px) + 12px)}
.cesium-startup button{pointer-events:auto;min-height:44px;font-size:15px;max-width:100%}
