.app{width:100%;height:100%;position:relative;overflow:hidden;background:radial-gradient(circle at 70% 30%,rgba(15,48,64,.2),transparent 35%),#02060b}.canvas-map-container{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden;touch-action:none;-webkit-user-select:none;user-select:none}.map-canvas{position:absolute;top:0;right:0;bottom:0;left:0}.bg-canvas{z-index:1}.overlay-canvas{z-index:2;opacity:.94;will-change:transform}.anim-canvas{z-index:3;will-change:transform}.fg-canvas{z-index:4;pointer-events:none}.topbar{position:absolute;z-index:120;top:0;left:0;right:0;height:64px;padding:10px 16px;display:flex;align-items:center;justify-content:space-between;pointer-events:none;background:linear-gradient(180deg,rgba(1,5,9,.8),transparent)}.brand-button,.live-status{pointer-events:auto}.brand-button{display:flex;align-items:center;gap:10px;color:#f4fbff;border:0;background:transparent;cursor:pointer;text-align:left;padding:2px}.brand-button:hover .brand-mark{box-shadow:0 0 22px #60e0ffb8}.brand-mark{width:31px;height:31px;border-radius:50%;position:relative;border:1px solid rgba(135,232,255,.82);background:radial-gradient(circle at 30% 35%,rgba(176,245,255,.85) 0 3%,transparent 4%),radial-gradient(ellipse at 58% 48%,rgba(63,179,201,.55) 0 18%,transparent 19%),radial-gradient(ellipse at 36% 70%,rgba(81,155,130,.6) 0 15%,transparent 16%),#09202d;box-shadow:0 0 14px #40cae959}.brand-button strong{display:block;font-family:Georgia,Times New Roman,serif;font-size:21px;line-height:20px;letter-spacing:.5px}.brand-button small{display:block;margin-top:3px;color:#daeff68c;font-size:9px;letter-spacing:1.4px}.live-status{display:flex;align-items:center;gap:7px;padding:7px 10px;border:1px solid rgba(148,196,210,.16);border-radius:20px;color:#e2f1f6ad;background:#040d1394;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);font-size:11px}.status-dot{width:6px;height:6px;border-radius:50%;background:#68e4c2;box-shadow:0 0 8px #68e4c2}.status-dot.loading{background:#ffcf6b;animation:pulse 1s ease-in-out infinite}@keyframes pulse{50%{opacity:.35;transform:scale(.75)}}.side-panel{position:absolute;z-index:100;top:68px;left:14px;bottom:92px;width:366px;pointer-events:none}.panel-card{height:100%;overflow:auto;pointer-events:auto;padding:18px;border:1px solid rgba(154,210,225,.22);border-radius:12px;color:#eaf5f8;background:linear-gradient(145deg,#051219f0,#02090edb);box-shadow:0 18px 60px #0000006b;-webkit-backdrop-filter:blur(18px) saturate(120%);backdrop-filter:blur(18px) saturate(120%);animation:panel-in .2s ease-out;scrollbar-width:thin;scrollbar-color:rgba(124,190,207,.3) transparent}@keyframes panel-in{0%{opacity:0;transform:translate(-10px)}}.panel-heading{display:flex;align-items:flex-start;justify-content:space-between;padding-bottom:14px}.panel-heading h1{margin-top:3px;font-family:Georgia,Times New Roman,serif;font-size:26px;font-weight:400}.panel-eyebrow{color:#68d6e7;font-size:9px;letter-spacing:2px;text-transform:uppercase}.icon-button,.sample-close{border:1px solid rgba(162,207,219,.18);border-radius:50%;color:#e8f7fa9e;background:#ffffff0a;cursor:pointer}.icon-button{width:29px;height:29px;font-size:20px;line-height:24px}.icon-button:hover,.sample-close:hover{color:#fff;border-color:#a2e1ef80;background:#73d2e71f}.status-grid{display:grid;grid-template-columns:48px 1fr;gap:8px 10px;padding:12px;border-radius:8px;background:#6fb4c40f;font-size:11px}.status-grid span{color:#d3e7ed6b}.status-grid strong{color:#ebf7fad9;font-weight:500}.panel-section{padding:15px 0;border-bottom:1px solid rgba(172,214,224,.1)}.section-title{margin-bottom:9px;color:#cfe5eb75;font-size:9px;font-weight:600;letter-spacing:1.5px;text-transform:uppercase}.option-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}.option,.layer-button{border:1px solid rgba(154,206,219,.14);border-radius:7px;color:#e5f3f7b3;background:#ffffff09;cursor:pointer}.option{min-height:39px;font-size:11px}.option small{display:block;margin-top:2px;color:#d2e5ea47;font-size:8px}.option.active,.layer-button.active{border-color:#5ad9eb94;color:#f3fdff;background:linear-gradient(135deg,#3db8cd38,#3584ae1f);box-shadow:inset 0 0 18px #3ccde60d}button:disabled{cursor:not-allowed;opacity:.45}.pill-row{display:flex;flex-wrap:wrap;gap:5px}.pill{min-width:42px;padding:5px 8px;border:1px solid rgba(155,204,217,.14);border-radius:4px;color:#e5f3f78c;background:#ffffff09;font-size:10px;cursor:pointer}.pill.active{color:#fff;border-color:#69dced80;background:#43b6cb2e}.section-hint{margin-top:7px;color:#d3e6eb4d;font-size:9px}.layer-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:6px}.layer-button{min-height:49px;padding:8px 10px;text-align:left}.layer-button span,.layer-button small{display:block}.layer-button span{font-size:12px}.layer-button small{margin-top:4px;color:#d3eaef5c;font-size:9px}.switch-row{display:flex;align-items:center;justify-content:space-between;padding:7px 1px;cursor:pointer}.switch-row span,.switch-row strong,.switch-row small{display:block}.switch-row strong{color:#edf8facc;font-size:11px;font-weight:500}.switch-row small{margin-top:2px;color:#cfe4ea57;font-size:9px}.switch-row input{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:32px;height:18px;padding:2px;border:1px solid rgba(151,199,211,.24);border-radius:12px;background:#ffffff0f;cursor:pointer;transition:.18s ease}.switch-row input:before{content:"";display:block;width:12px;height:12px;border-radius:50%;background:#deedf194;transition:.18s ease}.switch-row input:checked{border-color:#53ddce8c;background:#3bc2ae47}.switch-row input:checked:before{transform:translate(14px);background:#84f0da;box-shadow:0 0 7px #62e8d2a6}.unit-section{display:flex;align-items:center;justify-content:space-between}.unit-section .section-title{margin:0}.segmented{display:flex;padding:2px;border:1px solid rgba(153,205,218,.14);border-radius:6px;background:#ffffff06}.segmented button{padding:4px 9px;border:0;border-radius:4px;color:#e2f1f56b;background:transparent;font-size:9px;cursor:pointer}.segmented button.active{color:#eaffff;background:#50bfd138}.model-note{display:flex;gap:8px;margin-top:14px;color:#d2e6eb61;font-size:9px;line-height:1.5}.note-dot{flex:0 0 auto;width:5px;height:5px;margin-top:4px;border-radius:50%;background:#e6bd61}.open-menu-button{position:absolute;z-index:90;top:76px;left:16px;padding:9px 12px;border:1px solid rgba(146,205,219,.22);border-radius:7px;color:#ebf8fbd1;background:#040f15bd;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);cursor:pointer;font-size:11px}.open-menu-button span{margin-right:6px;color:#74d7e7}.interaction-hint{position:absolute;z-index:50;top:76px;left:50%;transform:translate(-50%);padding:6px 10px;border-radius:14px;color:#dbedf25e;background:#020a0f5c;font-size:9px;letter-spacing:.5px;pointer-events:none}.sample-card{--sample-x: 50%;--sample-y: 50%;position:absolute;z-index:110;left:var(--sample-x);top:var(--sample-y);width:270px;padding:14px;border:1px solid rgba(122,216,232,.32);border-radius:10px;color:#edf9fb;background:linear-gradient(145deg,#04131bf5,#020a0feb);box-shadow:0 15px 42px #00000080,0 0 25px #30b5cf14;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);pointer-events:auto;animation:sample-in .15s ease-out}@keyframes sample-in{0%{opacity:0;transform:translateY(4px)}}.sample-close{position:absolute;top:9px;right:9px;width:22px;height:22px;font-size:15px}.sample-coordinate{display:flex;align-items:center;gap:7px;padding-right:22px;color:#e0f0f494;font-size:10px}.sample-coordinate strong{font-weight:500}.crosshair{display:grid;place-items:center;width:17px;height:17px;border:1px solid rgba(105,221,236,.45);border-radius:50%;color:#78ddeb}.sample-primary{display:grid;grid-template-columns:32px 1fr;align-items:end;gap:2px 8px;padding:13px 0 11px}.sample-primary>span{grid-row:1 / 3;align-self:center;color:#d0e8ee61;font-size:11px}.sample-primary>strong{font-size:26px;font-weight:400;line-height:1}.sample-primary strong small{color:#e0f1f580;font-size:10px}.sample-primary em{color:#6bd9e8;font-size:9px;font-style:normal}.sample-grid{display:grid;grid-template-columns:repeat(3,1fr);padding-top:10px;border-top:1px solid rgba(150,206,219,.12)}.sample-grid span{color:#cfe6eb5c;font-size:8px}.sample-grid strong{display:block;margin-top:4px;color:#edf8facc;font-size:11px;font-weight:500}.timeline{position:absolute;z-index:80;left:50%;bottom:30px;transform:translate(-50%);width:min(610px,calc(100% - 48px));min-height:61px;display:grid;grid-template-columns:40px 1fr 48px;align-items:center;gap:10px;padding:9px 12px;border:1px solid rgba(144,202,216,.18);border-radius:9px;background:#030d13b8;box-shadow:0 10px 35px #00000040;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.play-button{width:33px;height:33px;border:1px solid rgba(126,207,223,.24);border-radius:50%;color:#def0f473;background:#5bbbcf14}.timeline-heading,.timeline-labels{display:flex;align-items:center;justify-content:space-between}.timeline-heading{margin-bottom:7px;font-size:9px}.timeline-heading strong{color:#eaf7f9c2;font-weight:500}.timeline-heading span,.timeline-labels{color:#cfe4ea4d}.timeline-track{height:3px;position:relative;border-radius:3px;background:#c6e2e91f}.timeline-progress{position:absolute;left:0;width:50%;height:100%;background:linear-gradient(90deg,#46aec940,#63d7e7)}.timeline-thumb{position:absolute;top:50%;left:50%;width:10px;height:10px;transform:translate(-50%,-50%);border:2px solid #b8f3f7;border-radius:50%;background:#2daabe;box-shadow:0 0 9px #4fd8eab3}.timeline-labels{margin-top:5px;font-size:8px}.timeline-labels strong{color:#9ae6efa6;font-weight:500}.now-button{padding:6px;border:1px solid rgba(147,204,217,.14);border-radius:5px;color:#e4f1f56b;background:#ffffff08;font-size:9px}.colorbar-wrapper{position:absolute;z-index:75;right:18px;bottom:104px;width:245px;display:grid;gap:4px;pointer-events:none}.colorbar-label{color:#e6f4f799;font-size:9px;letter-spacing:.6px;text-align:right}.colorbar-track{width:100%;height:7px;overflow:hidden;border:1px solid rgba(221,238,242,.18);border-radius:2px;background:#00000059}.colorbar-fill{width:100%;height:100%}.colorbar-range{display:flex;justify-content:space-between;color:#dceef26b;font-size:8px}.attribution{position:absolute;z-index:75;right:8px;bottom:7px;color:#cfe3e840;font-size:8px;pointer-events:none}.attribution span{color:#5fcdde66}@media (max-width: 720px){.topbar{height:58px;padding:9px 11px}.brand-button small,.interaction-hint{display:none}.live-status{max-width:48vw;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-size:9px}.side-panel{top:62px;left:8px;right:8px;bottom:104px;width:auto}.panel-card{padding:15px}.open-menu-button{top:66px;left:10px}.sample-card{position:fixed;left:10px;right:10px;top:auto;bottom:108px;width:auto}.timeline{width:calc(100% - 16px);bottom:24px;grid-template-columns:34px 1fr;padding:8px 10px}.now-button{display:none}.colorbar-wrapper{right:10px;bottom:96px;width:190px}.attribution{display:none}}@media (max-height: 650px){.side-panel{bottom:82px}.panel-card{padding-top:12px}.panel-section{padding:10px 0}.timeline{bottom:12px}.colorbar-wrapper{bottom:84px}}.side-panel{width:430px;bottom:24px}.panel-card{padding:16px 18px}.panel-section{padding:11px 0}.model-scale{display:block;height:10px;border-radius:2px;background:linear-gradient(90deg,#293678,#176d5c,#4f7d26,#8a5429,#772b52,#68416f,#8a8787)}.compact-controls{display:grid;grid-template-columns:1.2fr repeat(7,minmax(30px,auto));gap:4px}.mini-control,.text-option,.projection-button,.panel-footer-actions button{border:1px solid transparent;border-radius:5px;color:#e1eff37a;background:transparent;cursor:pointer;transition:color .15s ease,background .15s ease,border-color .15s ease}.mini-control{min-height:29px;padding:4px 6px;font-size:10px}.mini-control:hover,.text-option:hover,.projection-button:hover,.panel-footer-actions button:hover{color:#f4fbfc;background:#ffffff0e}.mini-control.active,.text-option.active,.projection-button.active{color:#f7d577;border-color:#e7c7652e;background:#d5b04224}.mode-row,.overlay-options{display:flex;flex-wrap:wrap;gap:4px}.text-option{min-height:29px;padding:4px 8px;font-size:11px}.overlay-options .text-option{min-width:48px}.unit-label{align-self:center;margin-left:2px;color:#d9eaee66;font-size:10px}.projection-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:5px}.projection-button{min-height:32px;font-size:10px}.panel-footer-actions{display:flex;align-items:center;justify-content:space-between;padding-top:12px}.panel-footer-actions button{padding:6px 8px;font-size:10px}.panel-footer-actions button:last-child{margin-left:auto}.feature-notice{position:absolute;z-index:210;left:50%;bottom:106px;transform:translate(-50%);max-width:min(520px,calc(100% - 32px));padding:9px 14px;border:1px solid rgba(230,199,104,.3);border-radius:18px;color:#fff1c8eb;background:#19150ad6;box-shadow:0 10px 30px #0000004d;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);font-size:11px;text-align:center;pointer-events:none;animation:notice-in .18s ease-out}@keyframes notice-in{0%{opacity:0;transform:translate(-50%,5px)}}.settings-backdrop{position:absolute;z-index:200;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;padding:18px;background:#00040861;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.settings-modal{width:min(520px,calc(100vw - 28px));max-height:calc(100vh - 36px);overflow:auto;padding:22px 24px;border:1px solid rgba(225,242,246,.72);border-radius:13px;color:#f0f7f8;background:linear-gradient(145deg,#030b12f7,#02070ced);box-shadow:0 22px 70px #0000008c;scrollbar-width:thin}.settings-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px}.settings-heading h2{font-size:23px;font-weight:600}.settings-group{margin-top:17px}.settings-group h3{margin-bottom:9px;font-size:15px;font-weight:600}.language-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:4px 14px}.language-grid button,.settings-segment button,.settings-close-wide{border:1px solid transparent;border-radius:6px;color:#e5eff2a6;background:transparent;cursor:pointer}.language-grid button{padding:6px 10px;font-size:13px;text-align:left}.language-grid button.active,.settings-segment button.active{color:#f6d679;border-color:#faf7e6b8;background:#ffffff2e}.settings-segment{display:grid;gap:6px}.settings-segment.two{grid-template-columns:repeat(2,1fr)}.settings-segment.five{grid-template-columns:repeat(5,1fr)}.settings-segment button{min-height:38px;padding:6px;font-size:12px}.settings-segment button:hover,.language-grid button:hover{color:#fff;background:#ffffff14}.settings-hint{margin-top:7px;color:#d8e8ec66;font-size:10px}.settings-close-wide{display:block;margin:22px auto 0;padding:8px 34px;font-size:14px}.bold-ui .panel-card,.bold-ui .settings-modal,.bold-ui button{font-weight:700!important}.font-tiny .panel-card,.font-tiny .settings-modal{font-size:9px}.font-small .panel-card,.font-small .settings-modal{font-size:11px}.font-medium .panel-card,.font-medium .settings-modal{font-size:13px}.font-large .panel-card,.font-large .settings-modal{font-size:15px}.font-huge .panel-card,.font-huge .settings-modal{font-size:18px}.font-large .text-option,.font-large .mini-control,.font-large .projection-button,.font-huge .text-option,.font-huge .mini-control,.font-huge .projection-button{font-size:.82em}@media (max-width: 720px){.side-panel{width:auto;bottom:100px}.compact-controls{grid-template-columns:repeat(4,1fr)}.settings-modal{padding:18px}.settings-segment.five{grid-template-columns:repeat(3,1fr)}}.calendar-modal{width:min(620px,calc(100vw - 28px));max-height:calc(100vh - 36px);overflow:auto;padding:22px 24px;border:1px solid rgba(225,242,246,.72);border-radius:13px;color:#f0f7f8;background:linear-gradient(145deg,#030b12fa,#02070cf2);box-shadow:0 22px 70px #0000008c}.calendar-subtitle{margin-top:4px;color:#daeaee6b;font-size:10px}.calendar-row{display:grid;grid-template-columns:45px 1fr;gap:12px;padding:12px 0;border-top:1px solid rgba(173,211,220,.1)}.calendar-row>strong{padding-top:6px;border-right:2px solid rgba(217,235,239,.5);color:#eff8fadb;font-size:17px;font-weight:500}.calendar-options{display:flex;flex-wrap:wrap;gap:5px}.calendar-options button,.calendar-days button,.calendar-actions button{border:1px solid transparent;border-radius:5px;color:#e2eef1ad;background:transparent;cursor:pointer}.calendar-options button{min-width:48px;padding:6px 8px;font-size:12px}.calendar-options button:hover,.calendar-days button:hover,.calendar-actions button:hover{color:#fff;background:#ffffff14}.calendar-options button.active,.calendar-days button.active{color:#f8d46f;background:#ffffff40}.calendar-days{display:grid;grid-template-columns:repeat(7,minmax(32px,1fr));gap:5px}.calendar-days .weekday{padding:4px 0 7px;color:#78d7e394;font-size:10px;text-align:center}.calendar-days button{min-height:34px;font-size:12px}.calendar-selection{margin:11px 0 0 57px;color:#e8f2f580;font-size:11px}.calendar-actions{display:flex;justify-content:flex-end;gap:10px;padding-top:16px}.calendar-actions button{min-width:84px;padding:8px 16px;border-color:#9fcfda2e;font-size:12px}.calendar-actions button.primary{color:#f9d878;border-color:#e7c6645c;background:#ddb43c1f}@media (max-width: 620px){.calendar-modal{padding:17px}.calendar-row{grid-template-columns:34px 1fr;gap:8px}.calendar-options button{min-width:42px}}*{margin:0;padding:0;box-sizing:border-box}html,body,#root{width:100%;height:100%;overflow:hidden;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica Neue,sans-serif;background:#000005;color:#eee;-webkit-font-smoothing:antialiased}button{font-family:inherit}
