.observer-shell{position:fixed;inset:0;overflow:hidden;background:radial-gradient(ellipse at 50% 55%,hsl(var(--secondary)/.52),hsl(var(--background)) 73%);color:hsl(var(--foreground));font-size:12px}
.globe-stage{position:absolute;inset:0;overflow:hidden;isolation:isolate}
.earth-render{position:absolute;inset:0;transition:filter 250ms ease-out}
.earth-render canvas{display:block;touch-action:none}
.earth-render.filter-night{filter:grayscale(1) sepia(1) hue-rotate(70deg) saturate(2.6) brightness(1.15) contrast(1.35)}
.earth-render.filter-night::after{content:'';position:absolute;inset:0;pointer-events:none;background:radial-gradient(transparent 30%,hsl(var(--primary)/.12));opacity:.6}
.earth-render.filter-thermal{filter:saturate(.1) contrast(1.6)}
.earth-render.filter-thermal::after{content:'';position:absolute;inset:0;pointer-events:none;background:linear-gradient(hsl(var(--secondary)),hsl(var(--chart-5)),hsl(var(--accent)));mix-blend-mode:color;opacity:.72}
.hud-vignette{position:absolute;inset:0;pointer-events:none;background:radial-gradient(ellipse at 50% 48%,transparent 42%,hsl(var(--background)/.22) 69%,hsl(var(--background)/.86) 100%);z-index:13}
.hud-scanlines{position:absolute;inset:0;pointer-events:none;background:repeating-linear-gradient(0deg,hsl(var(--foreground)/.018) 0 1px,transparent 1px 4px);mix-blend-mode:overlay;z-index:13}
.hud-frame{position:absolute;inset:12px;pointer-events:none;z-index:15}
.hud-frame>i{position:absolute;width:19px;height:19px;border-color:hsl(var(--primary)/.3);border-style:solid}
.hud-frame>i:nth-child(1){top:0;left:0;border-width:1px 0 0 1px}.hud-frame>i:nth-child(2){top:0;right:0;border-width:1px 1px 0 0}.hud-frame>i:nth-child(3){bottom:0;left:0;border-width:0 0 1px 1px}.hud-frame>i:nth-child(4){bottom:0;right:0;border-width:0 1px 1px 0}
.hud-top{height:64px;position:absolute;inset:0 0 auto;display:flex;align-items:center;justify-content:space-between;gap:18px;padding:0 30px;z-index:25;background:linear-gradient(hsl(var(--background)/.94),hsl(var(--background)/.25),transparent)}
.earth-brand{display:flex;align-items:center;gap:10px;font-size:15px;font-weight:600;white-space:nowrap}
.earth-brand small{display:block;font-weight:400;font-size:9px;color:hsl(var(--muted-foreground));margin-top:4px}
.brand-symbol{color:hsl(var(--primary));width:30px;height:30px;display:block}
.brand-symbol svg{width:100%;height:100%;fill:none;stroke:currentColor;stroke-width:.8}
.brand-divider{height:24px;width:1px;background:hsl(var(--primary)/.18);margin:0 8px}
.header-observe{display:flex;align-items:center;gap:7px;font-size:10px;font-weight:400;color:hsl(var(--muted-foreground))}
.status-dot,.paused-dot{display:inline-block;width:4px;height:4px;background:hsl(var(--primary));border-radius:50%;box-shadow:0 0 7px hsl(var(--primary)/.6);flex-shrink:0}
.status-dot{animation:pulse-dot 3s ease-in-out infinite}.paused-dot{background:hsl(var(--muted-foreground));box-shadow:none}
.hud-clock{position:absolute;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:10px;font-family:var(--font-mono);white-space:nowrap}
.hud-clock>span{font-size:9px;color:hsl(var(--primary)/.8)}
.hud-clock strong{font-size:16px;font-weight:400;letter-spacing:1px}
.hud-clock small{font-size:9px;color:hsl(var(--muted-foreground));padding-left:9px;border-left:1px solid hsl(var(--border))}
.header-actions{display:flex;align-items:center;gap:13px}
.demo-badge{display:inline-flex;align-items:center;gap:7px;color:hsl(var(--accent));font-size:9px;border:1px solid hsl(var(--accent)/.25);background:hsl(var(--accent)/.035);padding:5px 8px}
.demo-badge i{width:3px;height:3px;background:currentColor;border-radius:50%}
.icon-button{width:30px;height:30px;display:inline-flex;align-items:center;justify-content:center;color:hsl(var(--muted-foreground));border:1px solid transparent;background:transparent;cursor:pointer;border-radius:2px;transition:background-color 160ms,color 160ms,border-color 160ms,transform 120ms}
.icon-button:hover{border-color:hsl(var(--primary)/.35);color:hsl(var(--primary));background:hsl(var(--primary)/.07)}
.icon-button:active{transform:scale(.92);background:hsl(var(--primary)/.15)}
.share-button{display:flex;align-items:center;gap:8px;font-size:10px;color:hsl(var(--primary));border:1px solid hsl(var(--primary)/.3);background:hsl(var(--primary)/.04);padding:8px 12px;cursor:pointer;transition:background-color 160ms,border-color 160ms,transform 120ms}
.share-button:hover{background:hsl(var(--primary)/.12);border-color:hsl(var(--primary)/.65)}.share-button:active{transform:translateY(1px)}
.hud-ruler{position:absolute;z-index:14;left:50%;top:72px;transform:translateX(-50%);width:min(39vw,580px);height:25px;display:flex;justify-content:space-between;pointer-events:none;background:repeating-linear-gradient(90deg,hsl(var(--primary)/.22) 0 1px,transparent 1px 10px) left top / 100% 5px no-repeat;font-family:var(--font-mono);font-size:8px;color:hsl(var(--muted-foreground)/.6);padding-top:10px}
.hud-ruler span:nth-child(4){color:hsl(var(--primary));position:relative}.hud-ruler span:nth-child(4)::before{content:'';width:0;height:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:4px solid hsl(var(--primary));position:absolute;top:-13px;left:1px}
.hud-reticle{position:absolute;left:50%;top:50%;width:34px;height:34px;transform:translate(-50%,-50%);color:hsl(var(--primary)/.4);pointer-events:none;z-index:14}
.hud-reticle i{position:absolute;background:currentColor}.hud-reticle i:first-child{height:1px;width:100%;top:50%}.hud-reticle i:nth-child(2){width:1px;height:100%;left:50%}.hud-reticle::after{content:'';position:absolute;inset:12px;border:1px solid currentColor;background:hsl(var(--background)/.3)}
.hud-reticle.tracking{color:hsl(var(--accent)/.7)}.hud-reticle span{position:absolute;top:44px;left:50%;transform:translateX(-50%);font-size:9px;white-space:nowrap;font-family:var(--font-mono)}
.instrument-panel{position:absolute;background:hsl(var(--card)/.69);border:1px solid hsl(var(--primary)/.13);backdrop-filter:blur(14px);padding:17px 17px 0;z-index:22;box-shadow:0 12px 36px hsl(var(--background)/.15);border-radius:2px}
.instrument-panel::before,.instrument-panel::after{content:'';position:absolute;width:7px;height:7px;pointer-events:none;border-color:hsl(var(--primary)/.5);border-style:solid}
.instrument-panel::before{left:-1px;top:-1px;border-width:1px 0 0 1px}.instrument-panel::after{right:-1px;bottom:-1px;border-width:0 1px 1px 0}
.layer-panel{top:96px;left:26px;width:228px;max-height:calc(100dvh - 220px);overflow:auto}
.panel-heading{display:flex;align-items:center;justify-content:space-between;gap:6px;min-height:22px;margin-bottom:12px}
.panel-heading h2{display:flex;align-items:center;gap:8px;font-size:12px;font-weight:500;margin:0}.panel-heading h2>svg{color:hsl(var(--primary)/.75)}
.quiet-button{border:1px solid transparent;background:transparent;color:hsl(var(--muted-foreground));padding:4px 0;font-size:9px;cursor:pointer;transition:color 160ms,background-color 160ms}
.quiet-button:hover{color:hsl(var(--primary));background:hsl(var(--primary)/.06)}.quiet-button:active{color:hsl(var(--foreground))}
.layer-list{border-top:1px solid hsl(var(--primary)/.09);padding-top:8px}
.layer-row{width:100%;display:flex;align-items:center;gap:11px;padding:13px 1px;background:transparent;border:1px solid transparent;border-radius:2px;text-align:left;cursor:pointer;transition:opacity 180ms,background-color 180ms,border-color 180ms}
.layer-row:hover{background:hsl(var(--primary)/.045);border-color:hsl(var(--primary)/.12)}
.layer-row:not(.active){opacity:.42}.layer-row:active{background:hsl(var(--primary)/.1)}
.signal-dot{display:inline-block;width:4px;height:4px;border-radius:50%;background:currentColor;box-shadow:0 0 8px currentColor;flex-shrink:0}
.layer-name{flex:1;font-size:11px}.layer-count{font-family:var(--font-mono);font-size:10px;color:hsl(var(--muted-foreground));font-variant-numeric:tabular-nums;margin-right:6px}
.small-switch{width:22px;height:11px;border-radius:7px;background:hsl(var(--border));padding:2px;transition:background-color 180ms;flex-shrink:0}
.small-switch i{display:block;width:7px;height:7px;border-radius:50%;background:hsl(var(--foreground));transition:transform 180ms}.small-switch.on{background:hsl(var(--primary)/.55)}.small-switch.on i{transform:translateX(11px);background:hsl(var(--primary))}
.layer-total{border-top:1px solid hsl(var(--primary)/.12);margin-top:10px;padding:19px 1px 17px;display:flex;align-items:center;justify-content:space-between;gap:8px}
.layer-total>div>span{display:block;font-size:10px;color:hsl(var(--muted-foreground))}.layer-total small{display:block;font-size:8px;color:hsl(var(--muted-foreground)/.8);margin-top:7px}.layer-total strong{font-family:var(--font-mono);font-size:29px;font-weight:400;letter-spacing:-1.2px}.layer-total strong span{font-family:var(--font-sans);font-size:9px;color:hsl(var(--muted-foreground));letter-spacing:0;margin-left:5px}
.source-disclaimer{display:flex;align-items:center;gap:5px;margin:0 -17px;padding:12px 13px;border-top:1px solid hsl(var(--primary)/.08);font-size:8px;color:hsl(var(--muted-foreground));line-height:1.7;background:hsl(var(--background)/.3)}
.source-disclaimer i{display:inline-block;width:3px;height:3px;background:hsl(var(--accent)/.65);border-radius:50%}
.target-panel{top:96px;right:26px;width:267px;max-height:calc(100dvh - 208px);overflow:auto;padding-bottom:0}
.result-count{font-family:var(--font-mono);font-size:10px;color:hsl(var(--primary));border:1px solid hsl(var(--primary)/.2);padding:2px 5px}
.target-search{display:flex;align-items:center;gap:8px;padding:9px 8px;border:1px solid hsl(var(--primary)/.15);color:hsl(var(--muted-foreground));background:hsl(var(--background)/.3);transition:border-color 160ms,background-color 160ms}
.target-search:focus-within{border-color:hsl(var(--primary)/.7);background:hsl(var(--primary)/.025)}
.target-search input{width:100%;min-width:0;background:transparent;border:0;outline:0;font-size:10px;color:hsl(var(--foreground))}.target-search input::-moz-placeholder{color:hsl(var(--muted-foreground)/.7)}.target-search input::placeholder{color:hsl(var(--muted-foreground)/.7)}.target-search button{border:0;background:transparent;color:inherit;padding:0;display:flex;cursor:pointer}
.list-head{display:flex;justify-content:space-between;color:hsl(var(--muted-foreground)/.8);font-size:8px;padding:16px 0 6px}
.target-row{display:flex;align-items:center;gap:9px;text-align:left;background:transparent;border:0;border-left:2px solid transparent;border-bottom:1px solid hsl(var(--primary)/.07);width:100%;padding:12px 2px;cursor:pointer;transition:border-color 170ms,transform 170ms,background-color 170ms}
.target-row:hover{border-left-color:hsl(var(--primary));transform:translateX(3px);background:hsl(var(--primary)/.025)}.target-row:active{transform:translateX(1px);background:hsl(var(--primary)/.08)}
.list-target-code{font-family:var(--font-mono);font-size:8px;color:hsl(var(--muted-foreground));display:flex;align-items:center;gap:7px;flex-shrink:0;width:42px}.list-target-code .signal-dot{width:3px;height:3px}
.list-target-text{flex:1;min-width:0}.target-row strong{font-size:10px;font-weight:500;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.target-row small{font-size:8px;display:block;color:hsl(var(--muted-foreground));margin-top:5px;line-height:1.5}.target-row>svg{color:hsl(var(--muted-foreground)/.55);flex-shrink:0}
.target-list-note{font-size:8px;display:flex;align-items:center;gap:7px;color:hsl(var(--muted-foreground));padding:13px 0 15px}.mini-crosshair{width:9px;height:9px;border:1px solid hsl(var(--primary)/.5);position:relative}.mini-crosshair::before{content:'';position:absolute;width:3px;height:3px;background:hsl(var(--primary)/.6);top:2px;left:2px}
.panel-code{font-family:var(--font-mono);font-size:9px;color:hsl(var(--muted-foreground));margin-left:5px}
.amber{color:hsl(var(--accent))!important}
.target-identity{border-top:1px solid hsl(var(--primary)/.1);border-bottom:1px solid hsl(var(--primary)/.1);padding:17px 0}
.target-type{font-size:9px;display:block}.target-identity h3{font-size:23px;font-weight:500;line-height:1.5;margin:9px 0 5px;overflow-wrap:anywhere}.target-identity p{font-size:10px;color:hsl(var(--muted-foreground));line-height:1.7;margin:0}
.target-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:17px 12px;margin:20px 0}
.target-fields dt{font-size:9px;color:hsl(var(--muted-foreground));margin-bottom:6px}.target-fields dd{font-size:11px;font-family:var(--font-mono),var(--font-sans);margin:0;overflow-wrap:anywhere;line-height:1.7}
.target-coordinates{display:flex;justify-content:space-between;gap:6px;font-family:var(--font-mono);font-size:9px;color:hsl(var(--primary)/.6);border-top:1px solid hsl(var(--primary)/.09);padding:14px 0 19px}
.target-actions{display:flex;flex-direction:column;gap:8px}.primary-button,.secondary-button{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:11px 15px;min-height:38px;border-radius:2px;font-size:11px;font-weight:400;cursor:pointer;transition:background-color 180ms,color 180ms,transform 120ms,border-color 180ms}
.primary-button{color:hsl(var(--primary));border:1px solid hsl(var(--primary)/.5);background:hsl(var(--primary)/.075)}.primary-button:hover{background:hsl(var(--primary)/.17);border-color:hsl(var(--primary));transform:translateY(-1px)}.primary-button.is-active{background:hsl(var(--primary)/.18);border-color:hsl(var(--primary))}
.secondary-button{color:hsl(var(--foreground));border:1px solid hsl(var(--border));background:hsl(var(--card)/.6)}.secondary-button:hover{border-color:hsl(var(--primary)/.6);color:hsl(var(--primary));background:hsl(var(--primary)/.08)}.primary-button:active,.secondary-button:active{transform:translateY(1px)}
.amber-button{border-color:hsl(var(--accent)/.4);color:hsl(var(--accent));background:hsl(var(--accent)/.035)}.amber-button:hover,.amber-button.is-active{border-color:hsl(var(--accent)/.8);color:hsl(var(--accent));background:hsl(var(--accent)/.13)}
.detail-note{font-size:8px;line-height:1.7;color:hsl(var(--muted-foreground));padding:2px 0 7px}
.camera-preview{position:relative;aspect-ratio:16/9;overflow:hidden;margin-top:15px;border:1px solid hsl(var(--accent)/.22);background:hsl(var(--background))}.camera-preview img{width:100%;height:100%;-o-object-fit:cover;object-fit:cover;opacity:.86}.camera-preview>span{position:absolute;top:7px;left:8px;background:hsl(var(--background)/.7);padding:3px 5px;font-size:8px;color:hsl(var(--accent))}.camera-preview small{font-family:var(--font-mono);position:absolute;bottom:7px;right:8px;font-size:8px;color:hsl(var(--foreground))}.camera-corner{position:absolute;inset:7px;pointer-events:none;border:1px solid hsl(var(--foreground)/.12)}
.empty-targets{display:flex;flex-direction:column;align-items:center;padding:30px 8px;gap:10px;color:hsl(var(--muted-foreground));text-align:center}.empty-targets strong{font-size:12px;color:hsl(var(--foreground));font-weight:400}.empty-targets p{font-size:10px;line-height:1.7;margin:0}
.tgt-tag{display:flex;align-items:center;gap:7px;border:0;background:transparent;cursor:pointer;white-space:nowrap;position:relative;padding:7px;color:inherit;transition:filter 160ms,transform 160ms;text-shadow:0 1px 3px hsl(var(--background))}
.target-bracket{width:9px;height:9px;position:relative;display:block;flex-shrink:0;background:hsl(var(--background)/.2)}.target-bracket::before,.target-bracket::after{content:'';position:absolute;inset:0;border:1px solid currentColor;clip-path:polygon(0 0,35% 0,35% 14%,14% 14%,14% 35%,0 35%,0 0,100% 0,100% 35%,86% 35%,86% 14%,65% 14%,65% 0,100% 0,100% 100%,65% 100%,65% 86%,86% 86%,86% 65%,100% 65%,100% 100%,0 100%,0 65%,14% 65%,14% 86%,35% 86%,35% 100%,0 100%)}
.tgt-label{font-family:var(--font-mono);font-size:8px;display:block;font-weight:400;letter-spacing:.25px}.tgt-label b{font-weight:400;opacity:.55;font-size:7px;margin-right:4px}.tgt-label small{display:block;font-size:7px;margin-top:6px;opacity:.8}
.tgt-tag:hover{filter:brightness(1.5);transform:translateY(-2px)}.tgt-tag:active{transform:translateY(1px)}
.tgt-lock .target-bracket{width:28px;height:28px;animation:lock-in 280ms ease-out both}.tgt-lock .target-bracket::after{border-radius:50%;inset:-8px;clip-path:none;border-style:dashed;opacity:.4;animation:spin-slow 22s linear infinite}.tgt-lock .tgt-label{font-size:9px;padding-left:13px;position:relative}.tgt-lock .tgt-label::before{content:'';position:absolute;left:-1px;top:13px;width:10px;height:1px;background:currentColor;transform:rotate(-30deg);opacity:.65}
.scene-location{position:absolute;left:29px;bottom:146px;z-index:18;pointer-events:none}.location-rule{display:block;width:25px;height:1px;background:hsl(var(--primary)/.5);margin-bottom:13px}.scene-location p{font-size:11px;color:hsl(var(--foreground)/.8);margin:0 0 8px}.scene-location strong{display:block;font-family:var(--font-mono);font-weight:400;font-size:11px;color:hsl(var(--primary)/.75)}.scene-location strong i{font-style:normal;color:hsl(var(--muted-foreground)/.5);margin:0 6px}.scene-location>span:last-child{display:block;font-size:8px;color:hsl(var(--muted-foreground));margin-top:8px}
.map-tools{position:absolute;right:319px;bottom:132px;display:flex;flex-direction:column;align-items:center;padding:3px;background:hsl(var(--card)/.65);border:1px solid hsl(var(--primary)/.16);backdrop-filter:blur(12px);z-index:20;border-radius:2px}.map-tools>span{height:1px;width:18px;background:hsl(var(--primary)/.16);margin:4px 0}
.stage-caption{position:absolute;left:50%;transform:translateX(-50%);bottom:109px;z-index:18;font-size:9px;color:hsl(var(--muted-foreground)/.8);white-space:nowrap;font-family:var(--font-mono),var(--font-sans);pointer-events:none}.stage-caption i{font-style:normal;margin:0 8px;color:hsl(var(--primary)/.4)}
.hud-dock{position:absolute;bottom:45px;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:9px;padding:8px 11px;background:hsl(var(--card)/.8);border:1px solid hsl(var(--primary)/.18);backdrop-filter:blur(14px);z-index:25;border-radius:2px;white-space:nowrap;box-shadow:0 10px 35px hsl(var(--background)/.25)}
.play-button{width:28px;height:28px;border:1px solid hsl(var(--primary)/.2);color:hsl(var(--primary));background:hsl(var(--primary)/.04);display:grid;place-items:center;cursor:pointer;transition:background-color 160ms,border-color 160ms,transform 120ms}.play-button:hover{background:hsl(var(--primary)/.14);border-color:hsl(var(--primary)/.6)}.play-button:active{transform:scale(.92)}.play-label{font-size:9px;color:hsl(var(--muted-foreground));width:45px}
.dock-divider{width:1px;height:17px;background:hsl(var(--primary)/.14);margin:0 4px}
.region-tabs,.filter-options{display:flex;gap:2px}.region-tabs button,.filter-options button{padding:7px 12px;font-size:10px;border:1px solid transparent;border-radius:1px;background:transparent;color:hsl(var(--muted-foreground));cursor:pointer;transition:background-color 160ms,color 160ms,border-color 160ms}
.region-tabs button.active,.filter-options button.active{color:hsl(var(--primary));border-color:hsl(var(--primary)/.45);background:hsl(var(--primary)/.05)}.region-tabs button:hover,.filter-options button:hover{background:hsl(var(--primary)/.08);color:hsl(var(--primary))}.region-tabs button:active,.filter-options button:active{background:hsl(var(--primary)/.18)}.filter-options button.thermal-button.active{color:hsl(var(--accent));border-color:hsl(var(--accent)/.5);background:hsl(var(--accent)/.06)}
.stage-mode{font-size:9px;color:hsl(var(--primary)/.7);display:flex;align-items:center;gap:6px;min-width:68px;padding:0 3px}.stage-mode i{width:3px;height:3px;border-radius:50%;background:currentColor}
.hud-footer{position:absolute;left:29px;right:29px;bottom:17px;display:flex;justify-content:space-between;align-items:center;font-size:8px;font-family:var(--font-mono),var(--font-sans);color:hsl(var(--muted-foreground)/.65);z-index:18;pointer-events:none;gap:10px}.hud-footer>span{display:flex;align-items:center;gap:6px}.hud-footer i:not(.status-dot):not(.paused-dot){font-style:normal;opacity:.5}.hud-footer b{font-weight:400;color:hsl(var(--primary)/.3);margin:0 4px}
.stage-empty{position:absolute;left:50%;top:56%;transform:translate(-50%,-50%);z-index:19;display:flex;flex-direction:column;align-items:center;padding:24px 28px;background:hsl(var(--card)/.86);border:1px solid hsl(var(--primary)/.2);backdrop-filter:blur(12px);text-align:center;gap:12px}.stage-empty strong{font-size:15px;font-weight:400}.stage-empty p{font-size:11px;margin:0 0 3px;color:hsl(var(--muted-foreground))}
.cockpit-hud{position:absolute;inset:130px 310px 150px;pointer-events:none;color:hsl(var(--accent));z-index:18;font-family:var(--font-mono)}.cockpit-heading{display:flex;justify-content:center;align-items:center;gap:37px;font-size:10px;border-bottom:1px solid hsl(var(--accent)/.4);padding:12px;max-width:440px;margin:0 auto}.cockpit-heading strong{font-size:20px;font-weight:400;border:1px solid hsl(var(--accent)/.5);padding:5px 12px}
.pitch-ladder{position:absolute;left:50%;top:47%;transform:translate(-50%,-50%);width:235px}.pitch-ladder>div{display:flex;align-items:center;justify-content:space-between;gap:13px;margin:26px 0;font-size:10px}.pitch-ladder i{display:block;width:65px;height:6px;border-bottom:1px solid hsl(var(--accent)/.75);border-left:1px solid hsl(var(--accent)/.75)}.pitch-ladder i:nth-child(3){border-left:0;border-right:1px solid hsl(var(--accent)/.75)}
.cockpit-speed,.cockpit-alt{position:absolute;top:45%;display:flex;flex-direction:column;gap:8px;max-width:130px}.cockpit-speed{left:8px}.cockpit-alt{right:8px;text-align:right}.cockpit-hud small{font-size:9px;opacity:.7}.cockpit-hud strong{font-weight:400;font-size:13px}.cockpit-caption{position:absolute;bottom:0;left:0;right:0;display:flex;flex-direction:column;align-items:center;gap:15px;font-size:9px;text-align:center}.cockpit-caption button{pointer-events:auto}.is-cockpit .scene-location,.is-cockpit .stage-caption{visibility:hidden}
.earth-dialog{max-width:min(480px,calc(100vw - 32px));max-height:calc(100dvh - 40px);overflow:auto;border-radius:2px!important;padding:28px;background:hsl(var(--card)/.94);border:1px solid hsl(var(--primary)/.28);backdrop-filter:blur(16px)}.earth-dialog h2{font-size:20px;line-height:1.5;font-weight:500}.earth-dialog p{font-size:12px;line-height:1.9;color:hsl(var(--muted-foreground))}.earth-dialog .share-field{display:flex;flex-direction:column;gap:9px;font-size:11px;margin:5px 0}.share-field input{font-size:10px;font-family:var(--font-mono);width:100%;min-width:0;padding:12px;background:hsl(var(--background)/.6);border:1px solid hsl(var(--primary)/.2);color:hsl(var(--foreground));border-radius:1px}.share-summary{display:flex;flex-wrap:wrap;gap:8px;font-size:10px;color:hsl(var(--primary)/.8)}.share-summary span{border:1px solid hsl(var(--primary)/.12);padding:5px 8px;background:hsl(var(--primary)/.03)}.help-steps p{display:flex;gap:18px;margin:16px 0}.help-steps p>span:first-child{font-size:11px;font-family:var(--font-mono);color:hsl(var(--primary));margin-top:3px}.help-steps strong{display:block;font-weight:400;color:hsl(var(--foreground))}
.globe-fallback{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:center;gap:15px;text-align:center;max-width:320px;z-index:16;background:hsl(var(--card)/.9);border:1px solid hsl(var(--primary)/.2);padding:25px}.globe-fallback h2{font-size:18px;font-weight:400;margin:0}.globe-fallback p{font-size:11px;line-height:1.8;color:hsl(var(--muted-foreground))}
.mobile-panel-buttons,.mobile-scrim,.mobile-close{display:none}
/* 真实影像底图不可用时的降级说明；仅加载失败时出现 */
.earth-imagery-status{position:absolute;left:50%;top:112px;transform:translateX(-50%);z-index:16;display:flex;align-items:center;gap:8px;max-width:min(460px,84vw);padding:7px 12px;background:hsl(var(--card)/.72);border:1px solid hsl(var(--accent)/.28);backdrop-filter:blur(10px);border-radius:2px;font-size:10px;line-height:1.7;color:hsl(var(--muted-foreground));pointer-events:none;margin:0}
.earth-imagery-status strong{font-weight:400;color:hsl(var(--accent));white-space:nowrap}
@media(max-width:600px){.earth-imagery-status{top:104px;max-width:88vw;padding:6px 9px;font-size:9px}}
.admin-shell{max-width:1440px;padding:0 36px;margin:auto;min-height:100dvh;background:hsl(var(--background));font-size:12px}.earth-header{height:85px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid hsl(var(--primary)/.14);gap:20px}.admin-layout{display:grid;grid-template-columns:180px 1fr;gap:45px;margin-top:38px}.admin-nav{display:flex;flex-direction:column;gap:8px}.admin-nav button{display:flex;align-items:center;gap:12px;text-align:left;padding:14px;border:0;border-left:2px solid transparent;background:transparent;font-size:12px;color:hsl(var(--muted-foreground));cursor:pointer;transition:background-color 160ms,color 160ms,border-color 160ms}.admin-nav button.active{background:hsl(var(--primary)/.06);border-left-color:hsl(var(--primary));color:hsl(var(--primary))}.admin-nav button:hover{background:hsl(var(--primary)/.05);color:hsl(var(--primary))}.admin-heading{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:28px}.admin-heading h1{font-size:25px;font-weight:500;margin:0 0 10px}.admin-heading p{font-size:11px;color:hsl(var(--muted-foreground));margin:0;line-height:1.8}.admin-toolbar{display:flex;gap:12px;align-items:center;margin-bottom:18px}.admin-toolbar .target-search{width:300px}.admin-toolbar .target-search input{font-size:12px}.admin-toolbar>span{margin-left:auto;font-size:10px;color:hsl(var(--muted-foreground))}.camera-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px}.camera-card{border:1px solid hsl(var(--primary)/.15);border-radius:2px;overflow:hidden;background:hsl(var(--card))}.camera-art{height:180px;position:relative;background:hsl(var(--secondary));overflow:hidden}.camera-art img{width:100%;height:100%;-o-object-fit:cover;object-fit:cover;opacity:.85}.camera-art>span{position:absolute;top:12px;left:12px;background:hsl(var(--background)/.8);padding:5px 8px;font-size:9px;color:hsl(var(--accent))}.camera-card-body{padding:20px}.camera-card-body h3{font-size:15px;font-weight:500;margin:0 0 8px}.camera-card-body p{font-size:11px;color:hsl(var(--muted-foreground));margin:0}.camera-coords{margin-top:13px!important;display:flex;align-items:center;gap:5px;font-family:var(--font-mono)}.camera-card-footer{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:22px;padding-top:14px;border-top:1px solid hsl(var(--primary)/.1)}.camera-card-footer>span{font-size:9px;color:hsl(var(--muted-foreground))}.camera-card-footer button{font-size:10px;display:flex;gap:5px;align-items:center}.admin-footnote{font-size:10px;color:hsl(var(--muted-foreground));padding:22px 0;line-height:1.9;max-width:660px}.admin-form{display:flex;flex-direction:column;gap:15px}.admin-form label{font-size:11px;display:flex;flex-direction:column;gap:8px}.admin-form input,.admin-form select{width:100%;border:1px solid hsl(var(--input));background:hsl(var(--background));color:hsl(var(--foreground));padding:10px;min-width:0;font-size:12px}.coordinate-fields{display:grid;grid-template-columns:1fr 1fr;gap:12px}.form-checkbox{flex-direction:row!important;align-items:center}.form-checkbox input{width:14px;accent-color:hsl(var(--primary))}.form-error{color:hsl(var(--destructive));font-size:11px}.source-table{width:100%;border-collapse:collapse;background:hsl(var(--card));font-size:12px}.source-table th{color:hsl(var(--muted-foreground));font-weight:400;text-align:left;padding:17px;border-bottom:1px solid hsl(var(--primary)/.2)}.source-table td{padding:20px 17px;border-bottom:1px solid hsl(var(--primary)/.09)}.source-table td:first-child>span{display:flex;gap:10px;align-items:center}.source-table td:last-child{color:hsl(var(--muted-foreground));font-size:11px}.new-camera-art{height:180px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;background:hsl(var(--secondary));color:hsl(var(--primary)/.5);font-size:11px}.new-camera-art svg{width:130px;height:65px}
@keyframes pulse-dot{0%,100%{opacity:.55;box-shadow:0 0 4px hsl(var(--primary)/.3)}50%{opacity:1;box-shadow:0 0 9px hsl(var(--primary)/.7)}}
@keyframes lock-in{from{transform:scale(1.6);opacity:0}to{transform:scale(1);opacity:1}}
@keyframes spin-slow{to{transform:rotate(360deg)}}
@media(min-width:1600px){.layer-panel{left:32px;width:240px}.target-panel{right:32px;width:285px}.map-tools{right:340px}.layer-row{padding:15px 1px}.target-row{padding:14px 2px}.scene-location{left:34px}.target-panel,.layer-panel{top:100px}}
@media(max-width:1150px){.layer-panel{left:18px;width:205px;padding-left:14px;padding-right:14px}.target-panel{right:18px;width:240px;padding-left:14px;padding-right:14px}.source-disclaimer{margin-left:-14px;margin-right:-14px;font-size:7px}.hud-top{padding:0 22px}.header-observe,.brand-divider{display:none}.hud-clock small{display:none}.map-tools{right:277px}.region-tabs button,.filter-options button{padding:7px 10px}.hud-dock{gap:6px}.play-label{display:none}.scene-location{left:21px}.target-row{gap:6px}.list-target-code{width:37px;font-size:7px}.cockpit-hud{inset:130px 260px 155px}.cockpit-speed,.cockpit-alt{display:none}}
@media(max-width:900px){.target-panel{display:none}.target-panel.mobile-open{display:block}.mobile-panel-buttons{display:flex;position:absolute;right:20px;top:96px;z-index:24;background:hsl(var(--card)/.8);border:1px solid hsl(var(--primary)/.2)}.mobile-panel-buttons button{display:flex;align-items:center;gap:7px;padding:10px 13px;font-size:10px;color:hsl(var(--muted-foreground));border:0;background:transparent;cursor:pointer}.mobile-panel-buttons button:first-child{display:none}.mobile-panel-buttons button.active{color:hsl(var(--primary));background:hsl(var(--primary)/.1)}.target-panel.mobile-open{top:146px;max-height:calc(100dvh - 245px)}.map-tools{right:20px}.mobile-close{display:inline-flex;margin-left:auto}.result-count{margin-left:auto}.scene-location{bottom:140px}.hud-clock{left:49%}.hud-clock strong{font-size:13px}.header-actions{gap:5px}.full-button{display:none}.hud-dock{gap:5px;padding:7px 8px}.region-tabs button,.filter-options button{padding:7px 9px}.stage-mode,.mode-divider{display:none}.cockpit-hud{inset:155px 40px 155px}.admin-layout{grid-template-columns:145px 1fr;gap:24px}.camera-grid{grid-template-columns:1fr}.admin-shell{padding:0 22px}}
@media(max-height:750px) and (min-width:601px){.layer-panel,.target-panel{top:82px;max-height:calc(100dvh - 175px)}.layer-row{padding:10px 1px}.target-row{padding:9px 2px}.source-disclaimer{padding-top:8px;padding-bottom:8px}.layer-total{padding:12px 1px}.scene-location{bottom:115px}.hud-ruler{top:65px}.stage-caption{bottom:99px}.hud-dock{bottom:35px}.hud-footer{bottom:10px}.target-panel .panel-heading{margin-bottom:8px}}
@media(max-width:600px){.hud-top{height:61px;padding:0 18px;gap:7px}.earth-brand{font-size:13px;gap:7px}.brand-symbol{width:25px;height:25px}.earth-brand small{font-size:8px;margin-top:3px}.hud-clock{position:static;transform:none;gap:5px;margin-left:auto;margin-right:7px}.hud-clock strong{font-size:11px;letter-spacing:0}.hud-clock>span{font-size:7px}.hud-clock small,.demo-badge,.header-help{display:none}.share-button{padding:8px;border-color:hsl(var(--primary)/.25)}.share-button span{display:none}.hud-ruler{top:78px;width:62vw}.hud-frame{inset:8px}.hud-frame>i{width:14px;height:14px}.hud-reticle{width:26px;height:26px}.hud-reticle::after{inset:9px}.instrument-panel{top:auto!important;left:12px!important;right:12px!important;bottom:108px;width:auto!important;max-height:54dvh!important;display:none;overflow:auto;padding:17px 17px 0;z-index:31;background:hsl(var(--card)/.95);backdrop-filter:blur(18px)}.layer-panel.mobile-open,.target-panel.mobile-open{display:block}.layer-list{display:grid;grid-template-columns:1fr 1fr;gap:0 20px}.layer-row{padding:13px 1px}.layer-count{margin-right:0}.layer-total{margin-top:3px;padding:13px 1px}.source-disclaimer{margin-left:-17px;margin-right:-17px;font-size:8px}.mobile-panel-buttons{right:18px;top:115px;flex-direction:column;background:hsl(var(--card)/.7)}.mobile-panel-buttons button:first-child{display:flex}.mobile-panel-buttons button{padding:11px 13px;min-height:40px}.mobile-scrim{display:block;position:absolute;inset:70px 0 105px;border:0;background:hsl(var(--background)/.2);z-index:30}.target-panel .panel-heading{margin-bottom:8px}.target-list{display:grid;grid-template-columns:1fr 1fr;gap:0 12px}.target-row{padding:12px 0;gap:6px}.list-target-code{width:auto;font-size:7px}.list-target-code .signal-dot{display:none}.target-row strong{font-size:10px}.target-row small{font-size:8px}.target-row>svg{display:none}.list-head{padding-top:12px}.target-list-note{padding:10px 0 13px}.target-search input{font-size:11px}.target-fields{grid-template-columns:1fr 1fr;gap:13px;margin:16px 0}.target-identity{padding:12px 0}.target-identity h3{font-size:21px;margin:6px 0}.target-actions{flex-direction:row}.target-actions button{flex:1;font-size:10px;padding:10px}.detail-note{padding:0}.camera-preview{max-height:150px;margin-top:12px}.scene-location{left:20px;bottom:147px}.scene-location p{font-size:10px}.scene-location strong{font-size:10px}.scene-location>span:last-child{font-size:8px}.map-tools{right:18px;bottom:145px}.map-tools .icon-button{width:32px;height:32px}.stage-caption{bottom:114px;font-size:8px}.stage-caption i{margin:0 5px}.hud-dock{bottom:45px;left:12px;right:12px;transform:none;justify-content:space-between;gap:3px;padding:8px 6px;overflow-x:auto;scrollbar-width:none}.hud-dock .dock-divider{margin:0 2px;height:15px}.play-button{width:29px;height:29px;flex-shrink:0}.region-tabs,.filter-options{gap:0}.region-tabs button,.filter-options button{font-size:9px;padding:8px 8px;white-space:nowrap;min-height:32px}.hud-footer{left:17px;right:17px;bottom:17px;font-size:7px}.hud-footer>span:first-child{max-width:210px}.hud-footer>span:nth-child(2){font-size:0;gap:0}.hud-footer>span:nth-child(2)>b{display:none}.hud-footer .status-dot{width:4px;height:4px}.stage-empty{padding:20px;width:220px;top:50%}.cockpit-hud{inset:120px 30px 205px}.cockpit-heading{gap:17px;font-size:8px;padding:8px}.cockpit-heading strong{font-size:15px}.pitch-ladder{width:175px}.pitch-ladder i{width:42px}.pitch-ladder>div{margin:24px 0}.cockpit-caption{font-size:8px;gap:10px}.cockpit-caption button{font-size:10px;padding:8px;min-height:32px}.earth-dialog{padding:25px 20px}.earth-dialog h2{font-size:18px}.earth-dialog p{font-size:11px}.admin-shell{padding:0 17px}.admin-shell .earth-header{height:78px;gap:8px}.admin-shell .demo-badge{display:block;font-size:8px;max-width:125px;line-height:1.7;padding:4px 6px}.admin-layout{display:flex;flex-direction:column;gap:25px;margin-top:18px}.admin-nav{flex-direction:row;gap:15px}.admin-nav button{font-size:11px;padding:10px}.admin-heading{align-items:flex-start;margin-bottom:23px}.admin-heading h1{font-size:22px}.admin-heading p{font-size:10px}.admin-heading .primary-button{font-size:10px;padding:10px;white-space:nowrap}.admin-toolbar .target-search{width:100%}.admin-toolbar>span{white-space:nowrap}.source-table th,.source-table td{padding:13px 8px;font-size:10px}.source-table td:last-child{font-size:9px}.camera-art{height:170px}.admin-footnote{font-size:10px}.new-camera-art{height:170px}}
@media(prefers-reduced-motion:reduce){.observer-shell *,.admin-shell *,.earth-dialog,.earth-dialog *{animation:none!important;transition:none!important}.tgt-tag:hover,.target-row:hover,.primary-button:hover{transform:none}.status-dot{opacity:1}.tgt-lock .target-bracket{transform:scale(1);opacity:1}}
/* 内容管理后台：云端登录门与新面板（沿用深色监控台变量） */
.admin-gate{display:flex;justify-content:center;padding:80px 0 60px}
.admin-gate-card{position:relative;width:100%;max-width:420px;display:flex;flex-direction:column;gap:18px;padding:30px;background:hsl(var(--card)/.85);border:1px solid hsl(var(--primary)/.18);border-radius:2px;box-shadow:0 14px 40px hsl(var(--background)/.5)}
.admin-gate-card::before,.admin-gate-card::after{content:'';position:absolute;width:8px;height:8px;pointer-events:none;border-color:hsl(var(--primary)/.5);border-style:solid}
.admin-gate-card::before{left:-1px;top:-1px;border-width:1px 0 0 1px}.admin-gate-card::after{right:-1px;bottom:-1px;border-width:0 1px 1px 0}
.admin-gate-head{display:flex;align-items:flex-start;gap:13px;color:hsl(var(--primary))}
.admin-gate-head h1{font-size:19px;font-weight:500;margin:0 0 8px;color:hsl(var(--foreground))}
.admin-gate-head p{font-size:11px;line-height:1.8;color:hsl(var(--muted-foreground));margin:0}
.admin-gate-hint{display:flex;align-items:center;gap:8px;font-size:11px;line-height:1.6;color:hsl(var(--accent));border:1px solid hsl(var(--accent)/.25);background:hsl(var(--accent)/.05);padding:9px 11px;margin:0}
.admin-gate-hint i{width:3px;height:3px;border-radius:50%;background:currentColor;flex-shrink:0}
.admin-gate-actions{display:flex;justify-content:space-between;gap:10px}
.admin-field{display:flex;flex-direction:column;gap:8px;font-size:11px}
.admin-field>span{display:flex;align-items:center;gap:7px;color:hsl(var(--muted-foreground))}
.admin-field input{width:100%;min-width:0;padding:11px;font-size:13px;border-radius:1px;border:1px solid hsl(var(--input));background:hsl(var(--background));color:hsl(var(--foreground))}
.admin-field input:focus-visible{border-color:hsl(var(--primary)/.7)}
.admin-field-note{font-size:10px;color:hsl(var(--muted-foreground));margin:0;font-family:var(--font-mono)}
.admin-user{display:flex;align-items:center;gap:12px;font-size:11px;color:hsl(var(--muted-foreground))}
.admin-user-phone{font-family:var(--font-mono);color:hsl(var(--foreground))}
.admin-role-badge{font-size:9px;color:hsl(var(--primary));border:1px solid hsl(var(--primary)/.35);background:hsl(var(--primary)/.06);padding:4px 7px}
.admin-header-note{font-size:10px;color:hsl(var(--muted-foreground))}
.admin-loading{display:flex;align-items:center;justify-content:center;gap:10px;padding:90px 0;font-size:12px;color:hsl(var(--muted-foreground))}
.admin-error{display:flex;align-items:center;justify-content:space-between;gap:16px;border:1px solid hsl(var(--destructive)/.4);background:hsl(var(--destructive)/.07);padding:15px 17px;margin-bottom:20px}
.admin-error p{margin:0;font-size:11px;color:hsl(var(--foreground))}
.admin-pagination{display:flex;align-items:center;justify-content:center;gap:16px;margin-top:26px;font-size:11px;color:hsl(var(--muted-foreground))}
.admin-pagination .secondary-button{min-height:32px;padding:7px 14px;font-size:11px}
.admin-pagination .secondary-button:disabled{opacity:.4;cursor:not-allowed}
.camera-card-actions{display:flex;align-items:center;gap:12px}
.quiet-button.danger:hover{color:hsl(var(--destructive));background:hsl(var(--destructive)/.08)}
.camera-upload{display:flex;flex-direction:column;gap:10px}
.camera-upload-label{font-size:11px}
.camera-upload-preview{position:relative;aspect-ratio:16/9;overflow:hidden;border:1px solid hsl(var(--primary)/.18);background:hsl(var(--secondary))}
.camera-upload-preview img{width:100%;height:100%;-o-object-fit:cover;object-fit:cover;opacity:.88}
.camera-upload-preview>span{position:absolute;top:9px;left:10px;background:hsl(var(--background)/.78);padding:4px 7px;font-size:9px;color:hsl(var(--accent))}
.camera-upload-empty{aspect-ratio:16/9;display:flex;align-items:center;justify-content:center;text-align:center;padding:14px;border:1px dashed hsl(var(--primary)/.2);background:hsl(var(--secondary)/.5);font-size:10px;color:hsl(var(--muted-foreground))}
.camera-upload-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.camera-upload-button{cursor:pointer;min-height:34px;padding:8px 13px}
.camera-upload-button input{display:none}
.admin-panel{border:1px solid hsl(var(--primary)/.14);background:hsl(var(--card)/.7);padding:28px;display:flex;flex-direction:column;gap:30px}
.settings-section{display:flex;flex-direction:column;gap:12px}
.settings-section h2{font-size:13px;font-weight:500;margin:0;color:hsl(var(--foreground))}
.settings-note{font-size:10px;color:hsl(var(--muted-foreground));margin:0;line-height:1.75}
.settings-count{font-size:10px;color:hsl(var(--primary)/.8);font-family:var(--font-mono)}
.layer-option-groups{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px 34px}
.layer-option-group{display:flex;flex-direction:column;gap:9px}
.layer-option-group-name{font-size:9px;color:hsl(var(--primary)/.75);border-bottom:1px solid hsl(var(--primary)/.12);padding-bottom:7px}
.layer-option-grid{display:flex;flex-direction:column;gap:9px}
.layer-option{display:flex;align-items:center;gap:9px;font-size:11px;cursor:pointer}
.layer-option input{width:14px;accent-color:hsl(var(--primary))}
.settings-checkbox{font-size:11px}
.skeleton-card,.skeleton-block{border:1px solid hsl(var(--primary)/.1);background:linear-gradient(90deg,hsl(var(--secondary)/.7),hsl(var(--primary)/.05),hsl(var(--secondary)/.7));background-size:200% 100%;animation:shimmer 1.6s ease-in-out infinite;border-radius:2px}
.skeleton-card{min-height:290px}.skeleton-block{min-height:280px}
.audit-table td:first-child{font-size:11px;color:hsl(var(--muted-foreground));white-space:nowrap}
.audit-table td:nth-child(2){font-size:11px;color:hsl(var(--primary)/.85)}
.audit-action{font-size:11px;color:hsl(var(--foreground))}
.audit-entity{display:block;font-size:11px}
.audit-detail{display:block;font-size:9px;color:hsl(var(--muted-foreground));margin-top:5px;line-height:1.6}
.spin{animation:spin .9s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
@keyframes shimmer{0%{background-position:200% 0}100%{background-position:-200% 0}}
@media(max-width:900px){.admin-panel{padding:20px}.layer-option-groups{grid-template-columns:1fr}}
@media(max-width:640px){.admin-layout{grid-template-columns:1fr;gap:18px}.admin-nav{flex-direction:row;overflow-x:auto;gap:4px}.admin-nav button{border-left:0;border-bottom:2px solid transparent;white-space:nowrap;padding:12px 10px}.admin-nav button.active{border-left:0;border-bottom-color:hsl(var(--primary))}.admin-gate{padding:40px 0}.admin-heading{flex-direction:column;align-items:flex-start;gap:14px}.admin-user{gap:8px}.admin-user-phone{display:none}}
.admin-gate-pending{flex-direction:row;flex-wrap:wrap;align-items:center;justify-content:center;gap:10px;font-size:12px;color:hsl(var(--muted-foreground))}

/* 内置低清底图 / 高清影像状态：加载中沿用上面的提示条，高清失败或底图失败时提供手动重试 */
.earth-imagery-status.has-action{flex-wrap:wrap;row-gap:5px}
.earth-imagery-status.has-action span{flex:1 1 220px;min-width:0}
.earth-imagery-retry{flex:none;pointer-events:auto;padding:3px 9px;border:1px solid hsl(var(--accent)/.42);border-radius:1px;background:hsl(var(--accent)/.08);color:hsl(var(--accent));font-size:10px;line-height:1.6;cursor:pointer;transition:background-color 160ms,border-color 160ms}
.earth-imagery-retry:hover{background:hsl(var(--accent)/.16);border-color:hsl(var(--accent)/.6)}
.earth-imagery-retry:focus-visible{outline:2px solid hsl(var(--ring));outline-offset:2px}
@media(max-width:600px){.earth-imagery-status.has-action{justify-content:flex-start}.earth-imagery-status.has-action span{flex-basis:100%}}

/* ---- 图层符号、目标标签与摄像头画面状态 ---- */
.layer-glyph{display:block;flex-shrink:0;overflow:visible}
.layer-symbol{width:10px;height:10px;flex-shrink:0}
.layer-legend-note{margin:8px 0 0;font-size:8px;line-height:1.7;color:hsl(var(--muted-foreground)/.85)}
.tgt-shape{width:11px;height:11px;flex-shrink:0;display:block}
.tgt-camera .tgt-shape{width:11px;height:11px}
.tgt-label{max-width:132px;overflow:hidden;text-overflow:ellipsis;font-size:9px}
.tgt-label b{font-size:8px;margin-right:5px}
.tgt-label small{font-size:8px;margin-top:5px}
.tgt-action{display:block;font-size:8px;margin-top:5px;color:hsl(var(--accent));letter-spacing:.3px;opacity:.95}
.tgt-camera:hover .tgt-action{text-decoration:underline}
.camera-preview>span.camera-source{left:8px}
.camera-preview>span.camera-live{left:auto;right:8px;color:hsl(var(--muted-foreground));border:1px solid hsl(var(--foreground)/.16)}
.camera-preview[data-camera-state="failed"]>span.camera-live{color:hsl(var(--destructive))}
.camera-missing{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;padding:16px;text-align:center;color:hsl(var(--muted-foreground))}
.camera-missing strong{font-size:10px;font-weight:400;color:hsl(var(--foreground))}
.camera-missing span{font-size:8px;line-height:1.7;max-width:210px}
.camera-note{margin:7px 0 0;font-size:8px;line-height:1.7;color:hsl(var(--muted-foreground))}
@media(max-width:600px){.tgt-label{max-width:104px}.tgt-shape{width:10px;height:10px}.tgt-camera .tgt-shape{width:11px;height:11px}.tgt-action{font-size:7px}}
.layer-legend{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px 6px;margin:9px 0 2px;padding:9px 8px;border:1px solid hsl(var(--primary)/.12);background:hsl(var(--primary)/.028)}
.legend-item{display:flex;align-items:center;gap:6px;font-size:8px;color:hsl(var(--muted-foreground))}
.legend-item em{font-style:normal;white-space:nowrap}
.legend-glyph{width:9px;height:9px;flex-shrink:0;color:hsl(var(--primary)/.72)}
.camera-preview>span.camera-loading{left:50%;top:50%;right:auto;transform:translate(-50%,-50%);background:transparent;padding:0;font-size:9px;color:hsl(var(--muted-foreground))}
.tgt-lock .tgt-label{max-width:none}
/* 观察台真实数据流程：分组图层、来源与更新时间、事件流、天气时间帧、详情扩展。
   与 earth.css 同用深色监控台变量，只新增类名，不覆盖既有布局。 */

.live-badge{display:inline-flex;align-items:center;gap:7px;color:hsl(var(--primary));font-size:9px;border:1px solid hsl(var(--primary)/.3);background:hsl(var(--primary)/.045);padding:5px 8px;white-space:nowrap}
.live-badge i{width:3px;height:3px;background:currentColor;border-radius:50%;box-shadow:0 0 6px currentColor}
.live-badge.warn{color:hsl(var(--accent));border-color:hsl(var(--accent)/.4);background:hsl(var(--accent)/.06)}

/* 分组图层 */
.layer-group{display:block}
.layer-group-name{margin:11px 0 3px;font-size:8px;font-weight:400;letter-spacing:1px;color:hsl(var(--primary)/.7)}
.layer-group:first-child>.layer-group-name{margin-top:4px}

/* 11 个图层加来源区后面板明显变长：底部必须停在左下角区域读数之上，面板自身可滚动 */
.layer-panel{max-height:calc(100dvh - 328px)}
.layer-row{padding:10px 1px}
@media(max-height:750px) and (min-width:601px){.layer-panel{max-height:calc(100dvh - 288px)}}

@media(min-width:1600px){
  .layer-row{padding:11px 1px}
}

/* 数据来源与更新时间 */
.source-section{margin:0 -17px;padding:14px 13px 4px;border-top:1px solid hsl(var(--primary)/.12);background:hsl(var(--background)/.22)}
.source-heading{margin:0 0 10px;font-size:9px;font-weight:400;color:hsl(var(--muted-foreground))}
.source-list{display:flex;flex-direction:column;gap:9px}
.source-row{display:flex;flex-direction:column;gap:4px}
.source-line{display:flex;align-items:center;gap:6px;font-size:9px;min-width:0}
.source-line.is-inline{justify-content:flex-start;padding:8px 0 0;border-top:1px solid hsl(var(--primary)/.09);margin-top:10px}
.source-line.is-secondary{padding-left:2px;color:hsl(var(--muted-foreground))}
.source-line b{font-weight:400;color:hsl(var(--foreground)/.85);flex-shrink:0}
.source-dot{width:4px;height:4px;border-radius:50%;background:hsl(var(--muted-foreground));flex-shrink:0}
.source-dot.fresh{background:hsl(var(--primary));box-shadow:0 0 6px hsl(var(--primary)/.7)}
.source-dot.stale{background:hsl(var(--accent));box-shadow:0 0 6px hsl(var(--accent)/.6)}
.source-dot.unavailable{background:hsl(var(--destructive));box-shadow:0 0 6px hsl(var(--destructive)/.5)}
.source-dot.loading{background:hsl(var(--muted-foreground)/.6);animation:pulse-dot 2.4s ease-in-out infinite}
.source-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:hsl(var(--muted-foreground))}
.source-time{font-family:var(--font-mono);font-size:8px;color:hsl(var(--muted-foreground)/.85);white-space:nowrap;flex-shrink:0;font-variant-numeric:tabular-nums}
.source-time.stale{color:hsl(var(--accent)/.9)}
.source-time.unavailable{color:hsl(var(--destructive)/.9)}
.source-note{margin:0;font-size:8px;line-height:1.65;color:hsl(var(--muted-foreground)/.85)}
.layer-panel .source-disclaimer{padding-bottom:14px}

/* 天气影像时间帧 */
.weather-controls{margin:0 -17px;padding:13px 13px 15px;border-top:1px solid hsl(var(--primary)/.12)}
.weather-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:10px}
.weather-head h3{margin:0;font-size:9px;font-weight:400;color:hsl(var(--primary)/.7);letter-spacing:.5px}
.weather-products{display:flex;gap:2px}
.weather-products button{padding:5px 10px;font-size:9px;border:1px solid transparent;background:transparent;color:hsl(var(--muted-foreground));cursor:pointer;border-radius:1px;transition:background-color 160ms,color 160ms,border-color 160ms}
.weather-products button.active{color:hsl(var(--primary));border-color:hsl(var(--primary)/.45);background:hsl(var(--primary)/.06)}
.weather-products button:hover{color:hsl(var(--primary));background:hsl(var(--primary)/.08)}
.weather-times{display:flex;flex-wrap:wrap;justify-content:space-between;gap:4px 10px;font-size:8px;color:hsl(var(--muted-foreground));margin-bottom:9px}
.weather-times b{font-family:var(--font-mono);font-weight:400;color:hsl(var(--foreground)/.85)}
.frame-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:3px}
.frame-row{padding:7px 4px;font-family:var(--font-mono);font-size:8px;color:hsl(var(--muted-foreground));border:1px solid hsl(var(--primary)/.14);background:hsl(var(--primary)/.02);cursor:pointer;border-radius:1px;transition:background-color 160ms,border-color 160ms,color 160ms;white-space:nowrap}
.frame-row:hover{border-color:hsl(var(--primary)/.5);color:hsl(var(--primary))}
.frame-row.active{color:hsl(var(--primary));border-color:hsl(var(--primary)/.7);background:hsl(var(--primary)/.12)}
.weather-empty{margin:0;font-size:8px;line-height:1.7;color:hsl(var(--accent)/.85)}
.weather-hint{margin:9px 0 0;font-size:8px;line-height:1.7;color:hsl(var(--muted-foreground)/.85)}

/* 目标 / 事件切换 */
.panel-tabs{display:flex;gap:2px;margin-bottom:12px}
.panel-tabs button{flex:1;padding:8px 6px;font-size:10px;color:hsl(var(--muted-foreground));border:1px solid transparent;background:transparent;cursor:pointer;border-radius:1px;transition:background-color 160ms,color 160ms,border-color 160ms}
.panel-tabs button.active{color:hsl(var(--primary));border-color:hsl(var(--primary)/.45);background:hsl(var(--primary)/.05)}
.panel-tabs button:hover{color:hsl(var(--primary));background:hsl(var(--primary)/.08)}

/* 事件关注流 */
.event-list{display:flex;flex-direction:column}
.event-row{display:flex;align-items:flex-start;gap:9px;text-align:left;background:transparent;border:0;border-left:2px solid transparent;border-bottom:1px solid hsl(var(--primary)/.07);width:100%;padding:11px 2px;cursor:pointer;transition:border-color 170ms,transform 170ms,background-color 170ms}
.event-row:hover{border-left-color:hsl(var(--accent));transform:translateX(3px);background:hsl(var(--accent)/.035)}
.event-row:active{transform:translateX(1px);background:hsl(var(--accent)/.09)}
.event-kind{flex-shrink:0;width:33px;padding:3px 0;text-align:center;font-size:8px;color:hsl(var(--chart-5))}
.event-kind.quake{color:hsl(var(--chart-4));border:1px solid hsl(var(--chart-4)/.35)}
.event-kind.fire{color:hsl(var(--chart-5));border:1px solid hsl(var(--chart-5)/.35)}
.event-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}
.event-body strong{font-size:10px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.event-body small{font-size:8px;color:hsl(var(--muted-foreground));line-height:1.5;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.event-body em{font-size:8px;font-style:normal;color:hsl(var(--primary)/.75);line-height:1.5}
.event-time{flex-shrink:0;font-family:var(--font-mono);font-size:8px;color:hsl(var(--muted-foreground));padding-top:2px}
.event-row>svg{color:hsl(var(--muted-foreground)/.5);flex-shrink:0;margin-top:2px}

/* 详情扩展块 */
.detail-block{border-top:1px solid hsl(var(--primary)/.1);padding:16px 0 4px;display:flex;flex-direction:column;gap:10px}
.detail-block h4{margin:0;font-size:10px;font-weight:500;color:hsl(var(--primary)/.85);letter-spacing:.4px}
.detail-block .target-fields{margin:0}
.detail-note.warn{color:hsl(var(--accent)/.9)}
.link-button{text-decoration:none;min-height:34px;padding:9px 13px}
.camera-missing{display:flex;align-items:center;justify-content:center;width:100%;height:100%;font-size:10px;color:hsl(var(--muted-foreground));background:hsl(var(--secondary)/.6)}

/* 电台播放 */
.radio-player{display:flex;flex-direction:column;gap:10px;border:1px solid hsl(var(--primary)/.15);background:hsl(var(--background)/.35);padding:12px}
.radio-status{display:flex;flex-direction:column;gap:7px}
.radio-state{display:inline-flex;align-items:center;gap:7px;font-size:10px;color:hsl(var(--muted-foreground))}
.radio-state i{width:4px;height:4px;border-radius:50%;background:currentColor}
.radio-state.buffering{color:hsl(var(--accent))}
.radio-state.playing{color:hsl(var(--primary))}
.radio-state.playing i,.radio-state.buffering i{box-shadow:0 0 7px currentColor}
.radio-state.error{color:hsl(var(--destructive))}
.radio-state.stopped{color:hsl(var(--muted-foreground))}

/* 发射倒计时 */
.countdown{display:flex;flex-direction:column;gap:6px;border:1px solid hsl(var(--accent)/.25);background:hsl(var(--accent)/.04);padding:12px}
.countdown-label{font-size:9px;color:hsl(var(--accent)/.85)}
.countdown-value{font-family:var(--font-mono);font-size:21px;font-weight:400;letter-spacing:1px;color:hsl(var(--foreground))}
.countdown-value em{font-family:var(--font-sans);font-style:normal;font-size:10px;color:hsl(var(--muted-foreground));margin-right:8px}
.countdown.is-done{border-color:hsl(var(--destructive)/.35);background:hsl(var(--destructive)/.05)}
.countdown.is-done .countdown-label{color:hsl(var(--destructive)/.9)}
.countdown.is-done .countdown-value{font-size:15px}
.countdown-net{font-size:8px;font-family:var(--font-mono);color:hsl(var(--muted-foreground));line-height:1.7}

/* 分享短链状态 */
.share-state{display:flex;align-items:center;gap:9px;font-size:11px;color:hsl(var(--muted-foreground));margin:6px 0}
.share-failed{display:flex;flex-direction:column;gap:12px;align-items:flex-start}
.share-failed p{margin:0;font-size:11px;line-height:1.8;color:hsl(var(--accent))}

/* 短链还原等待屏 */
.share-boot{display:flex;align-items:center;justify-content:center}
.share-boot-card{display:flex;flex-direction:column;align-items:center;gap:12px;text-align:center;padding:30px 34px;border:1px solid hsl(var(--primary)/.2);background:hsl(var(--card)/.8);backdrop-filter:blur(14px);max-width:340px}
.share-boot-card .brand-symbol{width:34px;height:34px}
.share-boot-card h1{font-size:15px;font-weight:400;margin:0}
.share-boot-card p{font-size:10px;line-height:1.8;color:hsl(var(--muted-foreground));margin:0}
.share-boot-bar{display:block;width:120px;height:1px;background:linear-gradient(90deg,transparent,hsl(var(--primary)/.8),transparent);animation:pulse-dot 1.6s ease-in-out infinite}

/* 页脚署名较长：单行截断，避免在窄屏换行压住下方工具栏；完整署名在图层面板与说明弹窗 */
.hud-footer>span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* 帮助弹窗里的来源说明 */
.source-brief{border-top:1px solid hsl(var(--primary)/.15);padding-top:14px;margin-top:4px}
.source-brief h4{margin:0 0 10px;font-size:10px;font-weight:500;color:hsl(var(--primary)/.85)}
.source-brief dl{display:flex;flex-direction:column;gap:9px;margin:0}
.source-brief div{display:flex;gap:10px}
.source-brief dt{flex-shrink:0;width:74px;font-size:9px;color:hsl(var(--muted-foreground))}
.source-brief dd{margin:0;font-size:9px;line-height:1.75;color:hsl(var(--foreground)/.8)}

@media(max-width:1150px){
  .source-section,.weather-controls,.extension-tools{margin-left:-14px;margin-right:-14px;padding-left:11px;padding-right:11px}
}

@media(max-width:900px){
  .source-line b{font-size:8px}
  .source-time{font-size:7px}
  .source-name{font-size:8px}
  .detail-block{padding-top:13px}
  .hud-footer>span:first-child{display:none}
}

@media(max-width:600px){
  .live-badge{font-size:8px;padding:4px 6px;max-width:132px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .layer-list{grid-template-columns:1fr}
  .layer-group{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));-moz-column-gap:20px;column-gap:20px}
  .layer-group-name{grid-column:1 / -1}
  .source-section,.weather-controls,.extension-tools{margin-left:-17px;margin-right:-17px;padding-left:13px;padding-right:13px}
  .frame-list{grid-template-columns:repeat(2,minmax(0,1fr))}
  .countdown-value{font-size:19px}
}

@media(prefers-reduced-motion:reduce){
  .share-boot-bar,.source-dot.loading{animation:none}
}

/* ---- 城市 3D 舞台（高德深色矢量立体楼块） ----
   只覆盖地球舞台：地球保留挂载、只暂停绘制；进入城市模式时隐藏地球专属 HUD 与面板。
   过渡期城市图层先透明挂在原位（不能 display:none，否则高德初始化拿不到尺寸），由 .is-revealed 淡入；
   退出时 .is-leaving 淡出。这两个时长与 Observer 的 CITY_FADE_MS / CITY_EXIT_FADE_MS 一致。 */
.city3d-stage{position:absolute;inset:0;z-index:12;background:hsl(var(--background));opacity:0;transition:opacity 520ms ease-out;pointer-events:none}
.city3d-stage.is-revealed{opacity:1;pointer-events:auto}
.city3d-stage.is-leaving{opacity:0;pointer-events:none;transition:opacity 300ms ease-out}

/* ---- 点击光点/地表进城：俯冲与交叉淡入 ----
   俯冲期间锁住整个地球舞台的指针事件（拖动、连点、滚轮都不再产生新动作），
   交叉淡入时地球画面与地球 HUD、面板一起淡出，城市图层同时淡入；顶栏与正在淡入的城市图层保持可见。 */
.is-diving .globe-stage{pointer-events:none}
.is-diving .globe-stage>*{transition:opacity 520ms ease-out}
.is-diving.is-crossfade .globe-stage>*{opacity:0}
.is-diving.is-crossfade .globe-stage>.hud-top{opacity:1}
.is-diving.is-crossfade .globe-stage>.city3d-stage.is-revealed{opacity:1}
.city3d-view{position:absolute;inset:0}
.city3d-map{position:absolute;inset:0;background:hsl(var(--background))}
.city3d-map canvas{display:block}

/* 城市控件条与设备说明 */
.city3d-bar{position:absolute;top:74px;left:50%;transform:translateX(-50%);z-index:26;display:flex;flex-direction:column;gap:9px;max-width:calc(100vw - 32px);padding:9px 12px;background:hsl(var(--card)/.82);border:1px solid hsl(var(--primary)/.18);backdrop-filter:blur(14px);border-radius:2px;box-shadow:0 10px 35px hsl(var(--background)/.25)}
.city3d-bar-row{display:flex;align-items:center;justify-content:space-between;gap:10px;white-space:nowrap}
.city3d-title{margin:0;font-size:11px;font-weight:500;letter-spacing:.4px;color:hsl(var(--primary)/.9)}
.city3d-title:focus-visible{outline:1px solid hsl(var(--primary)/.7);outline-offset:3px}
.city3d-exit{min-height:44px;padding:8px 13px;font-size:10px;flex:none}
.city3d-note{margin:0;font-size:8px;line-height:1.7;color:hsl(var(--muted-foreground)/.9)}
.city3d-alert{display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin:0;padding:7px 9px;font-size:9px;line-height:1.7;color:hsl(var(--accent));border:1px solid hsl(var(--accent)/.28);background:hsl(var(--accent)/.05)}
.city3d-alert .quiet-button{min-height:24px;padding:4px 9px;border:1px solid hsl(var(--accent)/.4);border-radius:1px;color:hsl(var(--accent));flex:none;white-space:nowrap}
.city3d-alert .quiet-button:hover{background:hsl(var(--accent)/.14);color:hsl(var(--accent))}

.city3d-boot{position:absolute;left:50%;top:46%;transform:translate(-50%,-50%);z-index:27;display:flex;align-items:center;gap:9px;margin:0;padding:9px 14px;font-size:11px;color:hsl(var(--muted-foreground));background:hsl(var(--card)/.85);border:1px solid hsl(var(--primary)/.18);backdrop-filter:blur(12px)}

/* 失败卡片：中文提示 + 重试/刷新 + 返回地球 */
.city3d-fallback{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:28;display:flex;flex-direction:column;gap:13px;width:min(400px,calc(100vw - 32px));padding:24px;background:hsl(var(--card)/.92);border:1px solid hsl(var(--primary)/.2);backdrop-filter:blur(14px);border-radius:2px}
.city3d-fallback h3{margin:0;font-size:16px;font-weight:500}
.city3d-fallback p{margin:0;font-size:11px;line-height:1.8;color:hsl(var(--muted-foreground))}
.city3d-fallback small{font-family:var(--font-mono);font-size:9px;color:hsl(var(--muted-foreground)/.8);overflow-wrap:anywhere}
.city3d-fallback-actions{display:flex;flex-wrap:wrap;gap:9px}

/* 页脚居中，并抬到高德自带的左下角 logo 与版权行之上 */
.hud-footer.city3d-footer{justify-content:center;gap:16px;bottom:40px}
.hud-footer.city3d-footer>span{text-align:center}

/* 城市模式：地球专属 HUD、面板与入口隐去（visibility 同时移出键盘与辅助技术路径） */
.is-city3d .earth-render,
.is-city3d .globe-fallback,
.is-city3d .globe-footer,
.is-city3d .hud-vignette,
.is-city3d .hud-scanlines,
.is-city3d .hud-ruler,
.is-city3d .hud-reticle,
.is-city3d .scene-location,
.is-city3d .map-tools,
.is-city3d .stage-caption,
.is-city3d .hud-dock,
.is-city3d .stage-empty,
.is-city3d .cockpit-hud,
.is-city3d .live-badge,
.is-city3d .header-help,
.is-city3d .share-button,
.is-city3d .mobile-panel-buttons,
.is-city3d .mobile-scrim,
.is-city3d .layer-panel,
.is-city3d .target-panel{visibility:hidden;pointer-events:none}

@media(max-width:900px){
  .hud-footer.city3d-footer{bottom:40px;flex-direction:column;align-items:center;gap:3px}
  .hud-footer.city3d-footer>span:first-child{display:flex}
}

@media(max-width:600px){
  /* 手机上改成纵向流式排列：控件条与提示卡片依次向下，不互相遮挡 */
  .city3d-view{display:flex;flex-direction:column}
  .city3d-bar{position:relative;top:auto;left:auto;right:auto;transform:none;max-width:none;margin:70px 10px 0;padding:9px 10px;gap:8px}
  .city3d-bar-row{flex-wrap:wrap;gap:7px}
  .city3d-title{margin-right:auto;font-size:11px}
  .city3d-exit{min-height:44px;padding:8px 12px}
  .city3d-boot{position:relative;left:auto;top:auto;transform:none;margin:auto;max-width:calc(100% - 20px)}
  .city3d-fallback{position:relative;left:auto;top:auto;transform:none;width:auto;max-width:none;margin:auto 10px;padding:20px 18px}
  .city3d-alert .quiet-button{min-height:32px;padding:6px 11px}
  /* 小屏下地球页脚会把第二行字号置 0、把首行截到 210px；城市页脚是唯一署名，需完整显示 */
  .hud-footer.city3d-footer>span:first-child{max-width:none;white-space:normal}
  .hud-footer.city3d-footer>span:nth-child(2){font-size:inherit}
  .hud-footer.city3d-footer{bottom:44px}
}

/* ---- 照片级城市（Cesium + Google 照片级三维） ----
   画布全铺舞台，原生 CreditDisplay 必须保持可见；退出按钮、失败卡片与页脚各占独立位置。 */
.city3d-photoreal .city3d-map{background:#05080b}
.city3d-photoreal .cesium-viewer{position:absolute;inset:0;width:100%;height:100%}
.city3d-photoreal .city3d-bar-row{align-items:center}
.city3d-bar-actions{display:flex;align-items:center;gap:7px;flex:none}
.city3d-basic{min-height:44px;padding:8px 12px;font-size:10px;flex:none}

/* Cesium 原生署名独占舞台底部一行，位于页脚之下，不遮挡按钮与失败卡片 */
.city3d-photoreal .cesium-viewer-bottom{left:14px;right:14px;bottom:8px;padding-right:0;z-index:24;pointer-events:auto}
.city3d-photoreal .cesium-widget-credits{color:hsl(var(--foreground)/.85);font-family:var(--font-mono),var(--font-sans);font-size:9px;line-height:1.6;padding:3px 6px;border-radius:2px;background:hsl(var(--background)/.55);text-shadow:none}
.city3d-photoreal .cesium-widget-credits a{color:hsl(var(--primary)/.9)}
.city3d-photoreal .cesium-widget-credits a:hover{color:hsl(var(--primary))}
.city3d-photoreal .cesium-widget-credits img{max-height:14px;vertical-align:middle}
.city3d-photoreal .hud-footer.city3d-footer{bottom:54px}

/* 失败出口在手机上也要是可点按的尺寸 */
.city3d-fallback-actions .primary-button,
.city3d-fallback-actions .secondary-button{min-height:44px}

@media(max-width:600px){
  .city3d-photoreal .city3d-bar-row{flex-wrap:wrap}
  .city3d-bar-actions{width:100%;justify-content:flex-end;flex-wrap:wrap}
  .city3d-basic,.city3d-photoreal .city3d-exit{flex:1 1 auto;min-height:44px}
  .city3d-photoreal .cesium-viewer-bottom{left:10px;right:10px;bottom:6px}
  .city3d-photoreal .cesium-widget-credits{font-size:8px;line-height:1.7;overflow-wrap:anywhere}
  .city3d-photoreal .hud-footer.city3d-footer{bottom:68px}
  .city3d-fallback-actions{flex-direction:column;align-items:stretch}
  .city3d-fallback-actions>button{width:100%}
}

@media(max-width:420px){
  /* 窄屏（375px）：标题与操作区分开两行；两个按钮等宽铺满，长文案不溢出，
     字号与 44px 触控高度保持不变。 */
  /* 基础规则里的 .city3d-photoreal .city3d-bar-row 会把交叉轴设为 center，这里要用同等权重覆盖，
     否则标题会缩成内容宽并居中。 */
  .city3d-photoreal .city3d-bar-row{flex-direction:column;align-items:stretch}
  .city3d-title{margin-right:0}
  .city3d-bar-actions{width:100%;justify-content:flex-start}
  .city3d-bar-actions>button,.city3d-photoreal .city3d-exit{flex:1 1 0;min-height:44px;font-size:10px;white-space:nowrap}
}

/* ---- 扩展接缝：地图选点提示与扩展详情容器 ---- */
.pick-banner{position:absolute;top:78px;left:50%;transform:translateX(-50%);z-index:22;display:flex;align-items:center;gap:10px;max-width:calc(100% - 28px);padding:8px 12px;border:1px solid hsl(var(--primary)/.34);border-radius:2px;background:hsl(var(--background)/.92);box-shadow:0 14px 32px hsl(var(--background)/.55)}
.pick-banner strong{font-size:10px;font-weight:400;letter-spacing:.08em;color:hsl(var(--primary));white-space:nowrap}
.pick-banner span{flex:1;min-width:0;font-size:9px;line-height:1.6;color:hsl(var(--muted-foreground));overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pick-banner .quiet-button{flex:none;min-height:32px}

.extension-detail{display:flex;flex-direction:column;gap:12px}
.extension-detail-actions{display:flex;justify-content:flex-end;padding-top:2px}
.extension-detail-actions .secondary-button{min-height:36px}

@media(max-width:600px){
  .pick-banner{top:auto;bottom:116px;left:10px;right:10px;transform:none;max-width:none;flex-wrap:wrap;gap:6px 8px}
  .pick-banner span{flex:1 1 100%;white-space:normal}
  .pick-banner .quiet-button{min-height:36px}
}

/* ---- 卫星图层：类别筛选与目录计数（与选点提示同一抽屉线，选点时让位） ---- */
.satellite-filter{position:absolute;top:78px;left:50%;transform:translateX(-50%);z-index:21;pointer-events:auto;display:flex;align-items:center;gap:8px;max-width:calc(100% - 28px);padding:6px 9px;border:1px solid hsl(var(--primary)/.28);border-radius:2px;background:hsl(var(--background)/.9);box-shadow:0 14px 32px hsl(var(--background)/.5)}
.satellite-filter strong{font-size:9px;font-weight:400;letter-spacing:.08em;color:hsl(var(--primary));white-space:nowrap}
.satellite-filter button{min-height:26px;padding:0 8px;font-size:9px;color:hsl(var(--muted-foreground));background:transparent;border:1px solid hsl(var(--primary)/.22);border-radius:1px;cursor:pointer;transition:color 160ms,background-color 160ms,border-color 160ms}
.satellite-filter button[aria-pressed="true"]{color:hsl(var(--primary));border-color:hsl(var(--primary)/.5);background:hsl(var(--primary)/.07)}
.satellite-filter button:hover{color:hsl(var(--primary));background:hsl(var(--primary)/.08)}
.satellite-filter button:focus-visible{outline:1px solid hsl(var(--primary)/.6);outline-offset:1px}
.satellite-filter-count{font-family:var(--font-mono);font-size:8px;color:hsl(var(--muted-foreground)/.9);white-space:nowrap;font-variant-numeric:tabular-nums}

/* ---- 卫星过境面板 ---- */
.satellite-pass{display:flex;flex-direction:column;gap:9px}
.satellite-pass-head h3{margin:0;font-size:11px;font-weight:400;letter-spacing:.06em;color:hsl(var(--primary))}
.satellite-pass-head p{margin:4px 0 0;font-size:9px;line-height:1.6;color:hsl(var(--muted-foreground)/.95)}
.satellite-pass-note{margin:0;font-size:9px;line-height:1.7;color:hsl(var(--muted-foreground)/.9)}
.satellite-pass-warn{margin:0;font-size:9px;line-height:1.7;color:hsl(var(--accent)/.92)}
.satellite-pass-list{display:flex;flex-direction:column;margin:0;padding:0;list-style:none}
.satellite-pass-row{display:flex;gap:9px;padding:9px 1px;border-bottom:1px solid hsl(var(--primary)/.08)}
.satellite-pass-index{flex:none;font-family:var(--font-mono);font-size:8px;color:hsl(var(--primary)/.7)}
.satellite-pass-row strong{display:block;font-size:10px;font-weight:400;color:hsl(var(--foreground))}
.satellite-pass-times{display:flex;flex-wrap:wrap;gap:0 10px;margin:3px 0 0;font-family:var(--font-mono);font-size:9px;color:hsl(var(--muted-foreground));font-variant-numeric:tabular-nums}
.satellite-pass-times span{white-space:nowrap}
.satellite-pass-actions{display:flex;justify-content:flex-end;padding-top:2px}
.satellite-pass-actions .secondary-button{min-height:36px}

@media(max-width:600px){
  /* 窄屏没有顶部抽屉线：与选点提示一样挪到下方，两者不会同时出现（选点时筛选让位）。 */
  .satellite-filter{top:auto;bottom:116px;left:10px;right:10px;transform:none;max-width:none;flex-wrap:wrap;gap:6px 8px}
  .satellite-filter-count{flex:1 1 100%}
  .satellite-filter button{min-height:32px}
  .satellite-pass-actions .secondary-button{min-height:44px}
}

/* ---- 路线规划与共享单车面板 ----
   两者都挂在目标面板的内容区（240–285px 宽），沿用 8–11px 字号、1px 描边与等宽数字；
   长名称单行省略，不把面板撑高。 */
.route-panel,.bike-panel{display:flex;flex-direction:column;gap:12px}
.route-endpoints{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}
.route-endpoint{display:flex;flex-direction:column;gap:5px;min-width:0;padding:9px 9px 10px;border:1px solid hsl(var(--primary)/.16);background:hsl(var(--primary)/.03)}
.route-endpoint>span{font-size:8px;color:hsl(var(--muted-foreground))}
.route-endpoint b{font-family:var(--font-mono);font-size:9px;font-weight:400;line-height:1.6;color:hsl(var(--foreground)/.9);overflow-wrap:anywhere}
.route-endpoint small{font-size:8px;color:hsl(var(--primary)/.8);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.route-endpoint.is-empty b{color:hsl(var(--muted-foreground)/.75)}
.route-hint{margin:0;font-size:8px;line-height:1.75;color:hsl(var(--muted-foreground))}
.route-pick{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.route-pick .secondary-button{flex:1 1 auto;min-height:36px;font-size:10px;padding:9px 11px}
.route-pick .quiet-button{flex:none;min-height:32px}
.route-profiles{display:flex;gap:2px}
.route-profiles button{flex:1;padding:7px 4px;min-height:32px;font-size:10px;border:1px solid transparent;background:transparent;color:hsl(var(--muted-foreground));cursor:pointer;border-radius:1px;transition:background-color 160ms,color 160ms,border-color 160ms}
.route-profiles button:hover{color:hsl(var(--primary));background:hsl(var(--primary)/.08)}
.route-profiles button.active{color:hsl(var(--primary));border-color:hsl(var(--primary)/.45);background:hsl(var(--primary)/.06)}
.route-panel .primary-button{min-height:38px;font-size:10px}
.route-panel button:disabled,.bike-panel button:disabled{opacity:.5;cursor:not-allowed;transform:none}
.route-wait{margin:0;padding:9px 10px;font-size:9px;line-height:1.7;color:hsl(var(--accent));border:1px solid hsl(var(--accent)/.42);background:hsl(var(--accent)/.06)}
.route-error{display:flex;flex-direction:column;gap:6px;padding:10px;border:1px solid hsl(var(--destructive)/.35);background:hsl(var(--destructive)/.05)}
.route-error.is-wait{border-color:hsl(var(--accent)/.42);background:hsl(var(--accent)/.06)}
.route-error strong{font-size:10px;font-weight:500;color:hsl(var(--accent))}
.route-error p{margin:0;font-size:9px;line-height:1.75;color:hsl(var(--foreground)/.82)}
.route-error .route-error-note{font-size:8px;color:hsl(var(--muted-foreground))}
.route-summary{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;border-top:1px solid hsl(var(--primary)/.14);padding-top:12px}
.route-summary span{display:block;font-size:8px;color:hsl(var(--muted-foreground));margin-bottom:5px}
.route-summary strong{font-family:var(--font-mono);font-size:16px;font-weight:400;color:hsl(var(--foreground))}
.route-steps{list-style:none;margin:0;padding:0;max-height:248px;overflow:auto;border-top:1px solid hsl(var(--primary)/.1)}
.route-step{display:flex;gap:9px;align-items:flex-start;padding:9px 1px;border-bottom:1px solid hsl(var(--primary)/.07)}
.route-step-index{flex:none;width:16px;font-family:var(--font-mono);font-size:8px;line-height:1.9;color:hsl(var(--primary)/.7);text-align:right}
.route-step p{margin:0;font-size:9px;line-height:1.7;color:hsl(var(--foreground)/.88)}
.route-step small{display:block;margin-top:3px;font-family:var(--font-mono);font-size:8px;color:hsl(var(--muted-foreground))}
.route-credit{margin:0;font-size:8px;line-height:1.75;color:hsl(var(--muted-foreground)/.85)}
.route-credit a{color:hsl(var(--primary)/.9);text-decoration:none}
.route-credit a:hover{text-decoration:underline}

.bike-search{display:flex;align-items:center;gap:8px;padding:9px 8px;border:1px solid hsl(var(--primary)/.15);color:hsl(var(--muted-foreground));background:hsl(var(--background)/.3);transition:border-color 160ms,background-color 160ms}
.bike-search:focus-within{border-color:hsl(var(--primary)/.7);background:hsl(var(--primary)/.025)}
.bike-search input{width:100%;min-width:0;background:transparent;border:0;outline:0;font-size:10px;color:hsl(var(--foreground))}
.bike-search input::-moz-placeholder{color:hsl(var(--muted-foreground)/.7)}
.bike-search input::placeholder{color:hsl(var(--muted-foreground)/.7)}
.bike-search button{border:0;background:transparent;color:inherit;padding:0;display:flex;cursor:pointer}
.bike-countries{display:flex;flex-wrap:wrap;gap:4px}
.bike-countries button{padding:4px 7px;font-size:8px;border:1px solid hsl(var(--primary)/.14);background:hsl(var(--primary)/.02);color:hsl(var(--muted-foreground));cursor:pointer;border-radius:1px;transition:background-color 160ms,color 160ms,border-color 160ms}
.bike-countries button:hover{border-color:hsl(var(--primary)/.5);color:hsl(var(--primary))}
.bike-countries button.active{color:hsl(var(--primary));border-color:hsl(var(--primary)/.6);background:hsl(var(--primary)/.1)}
.bike-networks{display:flex;flex-direction:column;max-height:212px;overflow:auto;border-top:1px solid hsl(var(--primary)/.1)}
.bike-network{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;padding:9px 1px;border:0;border-bottom:1px solid hsl(var(--primary)/.07);background:transparent;color:inherit;cursor:pointer;text-align:left;transition:background-color 160ms,color 160ms}
.bike-network:hover{background:hsl(var(--primary)/.05);color:hsl(var(--primary))}
.bike-network>span{min-width:0;display:flex;flex-direction:column;gap:3px}
.bike-network strong{font-size:10px;font-weight:400;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bike-network small{font-size:8px;color:hsl(var(--muted-foreground));line-height:1.5;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bike-network>svg{flex:none;color:hsl(var(--primary)/.7)}
.bike-selected{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;padding:10px;border:1px solid hsl(var(--primary)/.18);background:hsl(var(--primary)/.03)}
.bike-selected>div{min-width:0;display:flex;flex-direction:column;gap:3px}
.bike-selected strong{font-size:12px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bike-selected small{font-size:8px;color:hsl(var(--muted-foreground));overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bike-selected .quiet-button{flex:none;min-height:28px}
.bike-meta{display:flex;justify-content:space-between;gap:8px;flex-wrap:wrap;font-size:8px;color:hsl(var(--muted-foreground))}
.bike-meta b{font-family:var(--font-mono);font-weight:400;color:hsl(var(--foreground)/.85)}
.bike-stations{display:flex;flex-direction:column;max-height:264px;overflow:auto;border-top:1px solid hsl(var(--primary)/.1)}
.bike-station{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:4px 8px;align-items:center;padding:9px 2px;border:0;border-bottom:1px solid hsl(var(--primary)/.07);border-left:2px solid transparent;background:transparent;color:inherit;text-align:left;cursor:pointer;transition:background-color 160ms,border-color 160ms}
.bike-station:hover{background:hsl(var(--primary)/.04)}
.bike-station.is-active{background:hsl(var(--primary)/.08);border-left-color:hsl(var(--primary))}
.bike-station strong{min-width:0;font-size:10px;font-weight:400;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bike-numbers{font-family:var(--font-mono);font-size:9px;color:hsl(var(--primary)/.85);white-space:nowrap}
.bike-station small{grid-column:1 / -1;font-size:8px;color:hsl(var(--muted-foreground));overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bike-panel .secondary-button{min-height:36px;font-size:10px}

/* 从地球或列表点中的站点：先看这一个站点的真实字段，未提供的字段如实标注。 */
.bike-station-head small{display:block;font-size:9px;line-height:1.6;color:hsl(var(--muted-foreground))}
.bike-station-detail .target-fields{margin:0}
.bike-station-actions{display:flex;justify-content:flex-end}
.bike-station-actions .quiet-button{min-height:32px}

@media(max-width:600px){
  .route-panel,.bike-panel{gap:11px}
  .route-endpoint b{font-size:10px}
  .route-pick .secondary-button{min-height:44px}
  .route-profiles button{min-height:40px;font-size:11px}
  .route-panel .primary-button{min-height:44px;font-size:11px}
  .route-steps,.bike-stations,.bike-networks{max-height:none}
  .bike-search{padding:11px 10px}
  .bike-search input{font-size:12px}
  .bike-station,.bike-network{padding:12px 2px;min-height:44px}
  .bike-countries button{min-height:32px;font-size:9px}
  .bike-panel .secondary-button,.bike-selected .quiet-button,.bike-station-actions .quiet-button{min-height:44px}
}


/* ---- 图层面板里的扩展入口：街景 / 路线 / 单车 ----
   与天气控件同一条分隔线，三个入口按两列排布；手机上一律 44px 触控高度。 */
.extension-tools{margin:0 -17px;padding:13px 13px 15px;border-top:1px solid hsl(var(--primary)/.12)}
.extension-tools-heading{margin:0 0 9px;font-size:9px;font-weight:400;letter-spacing:.5px;color:hsl(var(--primary)/.7)}
.extension-tools-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:5px}
.extension-tool{display:flex;align-items:center;gap:6px;min-width:0;min-height:34px;padding:8px 9px;font-size:9px;line-height:1.4;text-align:left;color:hsl(var(--muted-foreground));border:1px solid hsl(var(--primary)/.16);background:hsl(var(--primary)/.02);border-radius:1px;cursor:pointer;transition:color 160ms,border-color 160ms,background-color 160ms}
.extension-tool:last-child{grid-column:1 / -1}
.extension-tool>svg{flex:none;color:hsl(var(--primary)/.75)}
.extension-tool:hover:not(:disabled){color:hsl(var(--primary));border-color:hsl(var(--primary)/.5);background:hsl(var(--primary)/.08)}
.extension-tool:focus-visible{outline:1px solid hsl(var(--primary)/.7);outline-offset:1px}
.extension-tool:disabled{opacity:.42;cursor:not-allowed}
.extension-tools-note{margin:8px 0 0;font-size:8px;line-height:1.7;color:hsl(var(--muted-foreground))}

/* ---- 扩展详情内部 ---- */
.extension-detail{min-width:0}
.extension-detail .panel-heading h2{min-width:0}
.extension-detail .panel-code{max-width:110px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.extension-pick-row{display:flex;flex-wrap:wrap;align-items:center;gap:7px}
.extension-pick-row .secondary-button{flex:1 1 auto;min-height:36px;font-size:10px;padding:9px 11px}
.extension-pick-row .quiet-button{flex:none;min-height:32px}
.extension-info{display:flex;flex-direction:column;gap:12px;min-width:0}
.extension-info .target-fields{margin:0}
.extension-info-block{display:flex;flex-direction:column;gap:6px;padding-top:10px;border-top:1px solid hsl(var(--primary)/.1)}
.extension-info-block h4{margin:0;font-size:10px;font-weight:500;color:hsl(var(--primary)/.85)}
.extension-info-block .route-hint{overflow-wrap:anywhere}

/* 未请求的按需图层：中性灰点与「按需获取」，不能画成通道故障。 */
.source-dot.waiting{background:hsl(var(--muted-foreground)/.55)}
.source-time.waiting{color:hsl(var(--muted-foreground)/.8)}

@media(max-width:600px){
  .extension-tools{margin-left:-17px;margin-right:-17px;padding-left:13px;padding-right:13px}
  .extension-tool{min-height:44px;font-size:10px}
  .extension-pick-row .secondary-button,.extension-pick-row .quiet-button{min-height:44px;font-size:11px}
  .extension-detail .panel-code{max-width:92px}
  .route-pick .quiet-button,.bike-selected .quiet-button{min-height:44px}
  .bike-countries button{min-height:44px}
  .satellite-pass-actions .secondary-button{min-height:44px}
}

@media(max-width:1150px){
  .extension-tools{margin-left:-14px;margin-right:-14px;padding-left:11px;padding-right:11px}
}

/* ---- 图层面板里的公共摄像头浏览 ----
   浏览面板嵌在图层面板内（桌面左栏 / 手机图层抽屉），复用面板自身的滚动，不再开第二个底部抽屉。 */
.camera-browse{display:flex;flex-direction:column;gap:12px;margin:0 -17px;padding:13px 13px 15px;border-top:1px solid hsl(var(--primary)/.12)}
/* 面板内容宽只有 200px 左右：分页读数单独占一行，两个按钮不会被挤成横向滚动。 */
.camera-browse .pc-pager{flex-wrap:wrap;row-gap:7px}
.camera-browse .pc-pager>span{flex:1 1 100%;text-align:center}

/* 浏览入口单独占一行，与上面两列排布的选点入口区分开；展开时保持按下态。 */
.extension-tool-wide{width:100%;margin-top:5px;justify-content:flex-start}
.extension-tool-wide.is-active{border-color:hsl(var(--primary)/.55);background:hsl(var(--primary)/.09);color:hsl(var(--primary))}

@media(max-width:1150px){
  .camera-browse{margin-left:-14px;margin-right:-14px;padding-left:11px;padding-right:11px}
}

@media(max-width:600px){
  .camera-browse{margin-left:-17px;margin-right:-17px;padding-left:13px;padding-right:13px}
  /* 手机上的浏览列表、区域下拉与分页按 44px 触控高度，与观测工具保持一致。 */
  .camera-browse .pc-row{min-height:44px;padding:12px 2px}
  .camera-browse .pc-filter select{min-height:44px;font-size:12px}
  .camera-browse .pc-head .quiet-button,
  .camera-browse .pc-pager .secondary-button,
  .camera-browse .pc-retry{min-height:44px}
}
/* 街景照片扩展：详情内容、附近列表与全屏查看器。
   沿用观察台的深色监控台变量，只新增 .street-* 类名，不改动既有布局。 */

.street-block{display:flex;flex-direction:column;gap:11px}

.street-state .street-retry{margin-left:auto}
.street-state{display:flex;align-items:flex-start;gap:8px;font-size:9px;line-height:1.75;color:hsl(var(--muted-foreground));padding:8px 0}
.street-state>svg{flex:none;margin-top:1px;color:hsl(var(--muted-foreground)/.8)}
.street-state span{min-width:0;overflow-wrap:anywhere}
.street-state strong{display:block;font-weight:500;color:hsl(var(--foreground)/.9);margin-bottom:2px}
.street-state.warn>svg,.street-state.warn strong{color:hsl(var(--accent)/.9)}
.street-state.error>svg,.street-state.error strong{color:hsl(var(--destructive)/.9)}
.street-state .spin{color:hsl(var(--primary)/.8)}
.street-retry{display:inline-flex;align-items:center;gap:5px;flex:none;min-height:30px;padding:5px 9px;border:1px solid hsl(var(--primary)/.3);background:hsl(var(--primary)/.05);color:hsl(var(--primary));font-size:9px;cursor:pointer}
.street-retry:hover{background:hsl(var(--primary)/.12);border-color:hsl(var(--primary)/.55)}

.street-preview{position:relative;display:block;width:100%;padding:0;overflow:hidden;border:1px solid hsl(var(--primary)/.18);background:hsl(var(--background)/.45);cursor:pointer;text-align:left;transition:border-color 160ms}
.street-preview:hover{border-color:hsl(var(--primary)/.45)}
.street-preview:focus-visible{outline:1px solid hsl(var(--primary)/.7);outline-offset:2px}
.street-preview img{display:block;width:100%;aspect-ratio:16/9;-o-object-fit:cover;object-fit:cover}
.street-preview-tag,.street-preview-open{position:absolute;bottom:7px;display:inline-flex;align-items:center;gap:4px;padding:3px 6px;background:hsl(var(--background)/.78);font-size:8px;white-space:nowrap}
.street-preview-tag{left:7px;color:hsl(var(--primary)/.9)}
.street-preview-open{right:7px;color:hsl(var(--foreground)/.9)}
.street-preview.is-flat .street-preview-tag{color:hsl(var(--muted-foreground))}

.street-preview .street-thumb-fallback{aspect-ratio:16/9}

.street-meta{display:flex;flex-direction:column;gap:5px;margin:0}
.street-meta>div{display:flex;gap:9px;min-width:0;font-size:9px;line-height:1.6}
.street-meta dt{flex:none;width:50px;color:hsl(var(--muted-foreground)/.85)}
.street-meta dd{margin:0;min-width:0;overflow-wrap:anywhere;color:hsl(var(--foreground)/.85)}
.street-meta a{color:hsl(var(--primary)/.9);text-decoration:none;border-bottom:1px dotted hsl(var(--primary)/.45)}
.street-meta a:hover{color:hsl(var(--primary));border-bottom-color:hsl(var(--primary))}

.street-neighbor-row{display:flex;gap:7px}
.street-neighbor-row .secondary-button{flex:1;min-height:34px;padding:7px 9px;font-size:9px;gap:5px}
.street-neighbor-row .secondary-button:disabled{opacity:.35;cursor:not-allowed}
.street-hint{margin:0;font-size:8px;line-height:1.7;color:hsl(var(--muted-foreground)/.9)}
.street-hint.warn{color:hsl(var(--accent)/.9)}

.street-nearby-summary{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:4px 8px}
.street-nearby-summary b{font-size:11px;font-weight:500;color:hsl(var(--primary)/.9)}
.street-nearby-summary span{font-family:var(--font-mono);font-size:8px;color:hsl(var(--muted-foreground))}
.street-nearby-summary .street-nearby-close{width:28px;height:28px;flex:none;margin-left:auto}

.street-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}
.street-item{display:flex;flex-direction:column;min-width:0;padding:0;overflow:hidden;border:1px solid hsl(var(--primary)/.14);background:hsl(var(--primary)/.02);cursor:pointer;text-align:left;transition:border-color 160ms,background-color 160ms}
.street-item:hover{border-color:hsl(var(--primary)/.45);background:hsl(var(--primary)/.05)}
.street-item:focus-visible{outline:1px solid hsl(var(--primary)/.7);outline-offset:2px}
.street-item.active{border-color:hsl(var(--primary)/.7);background:hsl(var(--primary)/.08)}
.street-item img{display:block;width:100%;aspect-ratio:4/3;-o-object-fit:cover;object-fit:cover}
.street-item-body{display:flex;flex-direction:column;gap:3px;padding:6px 7px;min-width:0}
.street-item-body b{font-size:9px;font-weight:500;color:hsl(var(--foreground)/.9);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.street-item-body small{font-size:8px;line-height:1.45;color:hsl(var(--muted-foreground));overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.street-thumb-fallback{display:flex;align-items:center;justify-content:center;width:100%;aspect-ratio:4/3;padding:6px;background:hsl(var(--secondary)/.35);font-size:8px;line-height:1.5;text-align:center;color:hsl(var(--muted-foreground))}
.street-list-note{margin:0;font-size:8px;line-height:1.7;color:hsl(var(--muted-foreground)/.9)}

/* 全屏查看器：portal 到 body，单独覆盖整页 */
.street-viewer{position:fixed;inset:0;z-index:80;display:flex;flex-direction:column;background:hsl(var(--background))}
.street-viewer-head{display:flex;align-items:center;gap:10px;flex:none;padding:9px 13px;border-bottom:1px solid hsl(var(--primary)/.14);background:hsl(var(--card)/.94)}
.street-viewer-title{display:flex;flex-direction:column;gap:2px;flex:1;min-width:0}
.street-viewer-title b{font-size:11px;font-weight:500;color:hsl(var(--foreground)/.95)}
.street-viewer-title span{font-size:8px;line-height:1.5;color:hsl(var(--muted-foreground));overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.street-viewer-head .icon-button{width:38px;height:38px;flex:none}
.street-badge{display:inline-flex;align-items:center;gap:4px;flex:none;padding:3px 6px;border:1px solid hsl(var(--primary)/.4);background:hsl(var(--primary)/.06);font-size:8px;color:hsl(var(--primary)/.95);white-space:nowrap}
.street-badge.flat{border-color:hsl(var(--border));background:transparent;color:hsl(var(--muted-foreground))}

.street-viewer-stage{position:relative;flex:1;min-height:0;overflow:hidden;background:#04080a;touch-action:none}
.street-viewer-host{position:absolute;inset:0;cursor:grab;outline:none}
.street-viewer-host:active{cursor:grabbing}
.street-viewer-host:focus-visible{outline:1px solid hsl(var(--primary)/.8);outline-offset:-2px}
.street-viewer-host canvas{display:block;width:100%;height:100%}
.street-flat{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;padding:8px}
.street-flat img{max-width:100%;max-height:100%;-o-object-fit:contain;object-fit:contain;background:#04080a}
.street-flat-note{position:absolute;left:10px;bottom:10px;right:10px;margin:0;padding:6px 8px;background:hsl(var(--background)/.82);font-size:8px;line-height:1.6;color:hsl(var(--muted-foreground))}
.street-stage-state{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:9px;padding:24px;text-align:center;background:hsl(var(--background)/.55);color:hsl(var(--muted-foreground))}
.street-stage-state strong{font-size:11px;font-weight:500;color:hsl(var(--foreground)/.9)}
.street-stage-state span{max-width:360px;font-size:9px;line-height:1.75}
.street-stage-loading{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);display:inline-flex;align-items:center;gap:7px;padding:7px 11px;background:hsl(var(--background)/.8);font-size:9px;color:hsl(var(--muted-foreground))}

.street-nav{position:absolute;top:50%;z-index:2;display:flex;align-items:center;justify-content:center;width:40px;height:58px;transform:translateY(-50%);border:1px solid hsl(var(--primary)/.24);background:hsl(var(--background)/.72);color:hsl(var(--foreground)/.9);cursor:pointer;transition:background-color 160ms,border-color 160ms}
.street-nav:hover:not(:disabled){background:hsl(var(--primary)/.16);border-color:hsl(var(--primary)/.6);color:hsl(var(--primary))}
.street-nav:disabled{opacity:.25;cursor:not-allowed}
.street-nav.prev{left:10px}
.street-nav.next{right:10px}

.street-viewer-foot{display:flex;flex-direction:column;gap:6px;flex:none;padding:9px 13px 10px;border-top:1px solid hsl(var(--primary)/.14);background:hsl(var(--card)/.94)}
.street-credit-line{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 12px;font-size:9px;color:hsl(var(--muted-foreground))}
.street-credit-line b{font-weight:400;color:hsl(var(--muted-foreground)/.75)}
.street-credit-line a{color:hsl(var(--primary)/.95);text-decoration:none;border-bottom:1px dotted hsl(var(--primary)/.5);overflow-wrap:anywhere}
.street-credit-line a:hover{color:hsl(var(--primary));border-bottom-color:hsl(var(--primary))}
.street-credit-line span{overflow-wrap:anywhere}
.street-viewer-position{display:flex;flex-wrap:wrap;gap:4px 13px;font-family:var(--font-mono);font-size:8px;color:hsl(var(--muted-foreground)/.85)}
.street-viewer .street-hint{padding-top:1px}

@media(max-width:600px){
  .street-viewer-head{padding:8px 10px;gap:7px}
  .street-viewer-title b{font-size:11px}
  .street-viewer-title span{font-size:7px}
  .street-badge{font-size:7px;padding:2px 5px}
  .street-viewer-head .icon-button{width:42px;height:42px}
  .street-nav{width:40px;height:52px}
  .street-nav.prev{left:6px}
  .street-nav.next{right:6px}
  .street-retry{min-height:44px}
  .street-nearby-summary .street-nearby-close{width:44px;height:44px}
  .street-viewer-foot{padding:8px 10px;gap:5px}
  .street-credit-line{font-size:8px;gap:3px 9px}
  .street-viewer-position{font-size:7px;gap:3px 9px}
  .street-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:5px}
  .street-item-body{padding:5px 6px}
  .street-item-body b{font-size:9px}
  .street-item-body small{font-size:7px}
  .street-neighbor-row .secondary-button{min-height:44px}
}

@media(prefers-reduced-motion:reduce){
  .street-preview,.street-item,.street-nav,.street-retry{transition:none}
}
/* 公共摄像头网络（Caltrans / TfL）：浏览面板、画面预览、地球聚合标签与城市附近点位。 */

.pc-browser{display:flex;flex-direction:column;gap:12px;min-width:0}
.pc-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}
.pc-head h3{margin:0;font-size:11px;font-weight:500;letter-spacing:.4px;color:hsl(var(--primary)/.9)}
.pc-sub{margin:4px 0 0;font-size:8px;line-height:1.6;color:hsl(var(--muted-foreground))}
.pc-head .quiet-button{flex:none;display:inline-flex;align-items:center;gap:5px}

.pc-filter{display:flex;flex-direction:column;gap:5px}
.pc-filter>span{font-size:8px;letter-spacing:.6px;color:hsl(var(--muted-foreground))}
.pc-filter select{width:100%;padding:8px 9px;font-family:inherit;font-size:10px;color:hsl(var(--foreground));background:hsl(var(--card)/.7);border:1px solid hsl(var(--primary)/.22);border-radius:2px;cursor:pointer}
.pc-filter select:hover{border-color:hsl(var(--primary)/.5)}
.pc-filter select:focus-visible{outline:1px solid hsl(var(--primary)/.7);outline-offset:2px}

.pc-status{display:flex;align-items:center;gap:7px;margin:0;font-size:8px;line-height:1.7;color:hsl(var(--muted-foreground))}
.pc-status .source-dot{width:4px;height:4px;border-radius:50%;flex-shrink:0;background:hsl(var(--muted-foreground))}
.pc-status .source-dot.fresh{background:hsl(var(--primary));box-shadow:0 0 6px hsl(var(--primary)/.7)}
.pc-status .source-dot.stale{background:hsl(var(--accent));box-shadow:0 0 6px hsl(var(--accent)/.6)}
.pc-status .source-dot.unavailable{background:hsl(var(--destructive));box-shadow:0 0 6px hsl(var(--destructive)/.5)}
.pc-status .source-dot.loading{background:hsl(var(--muted-foreground)/.6)}

.pc-note{margin:0;font-size:8px;line-height:1.7;color:hsl(var(--muted-foreground)/.9)}

.pc-empty{display:flex;flex-direction:column;align-items:flex-start;gap:8px;padding:13px 12px;border:1px solid hsl(var(--accent)/.24);background:hsl(var(--accent)/.04)}
.pc-empty strong{font-size:10px;font-weight:500;color:hsl(var(--accent))}
.pc-empty span{font-size:9px;line-height:1.7;color:hsl(var(--muted-foreground))}
.pc-retry{display:inline-flex;align-items:center;gap:6px;min-height:30px;padding:6px 11px;font-size:9px}

.pc-list{display:flex;flex-direction:column;margin:0;padding:0;list-style:none;border-top:1px solid hsl(var(--primary)/.1)}
.pc-list li{display:block;margin:0}
.pc-row{display:flex;align-items:flex-start;gap:9px;width:100%;padding:9px 2px;text-align:left;border:0;border-bottom:1px solid hsl(var(--primary)/.07);background:transparent;cursor:pointer;transition:background-color 160ms,border-color 160ms,padding-left 160ms}
.pc-row:hover{background:hsl(var(--primary)/.045);padding-left:5px}
.pc-row:focus-visible{outline:1px solid hsl(var(--primary)/.7);outline-offset:-1px}
.pc-row.is-active{background:hsl(var(--primary)/.09);border-bottom-color:hsl(var(--primary)/.35)}
.pc-row-main{display:flex;flex-direction:column;gap:3px;min-width:0;flex:1}
.pc-row-main strong{font-size:10px;font-weight:500;color:hsl(var(--foreground));overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pc-row-main small{font-size:8px;line-height:1.5;color:hsl(var(--muted-foreground));overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pc-tag{flex-shrink:0;font-family:var(--font-mono);font-size:8px;color:hsl(var(--primary)/.8);border:1px solid hsl(var(--primary)/.24);padding:2px 4px}

.pc-pager{display:flex;align-items:center;justify-content:space-between;gap:8px;padding-top:2px}
.pc-pager>span{font-family:var(--font-mono);font-size:8px;color:hsl(var(--muted-foreground));white-space:nowrap}
.pc-pager .secondary-button{min-height:30px;padding:6px 9px;font-size:9px;gap:4px}
.pc-pager .secondary-button:disabled{opacity:.38;cursor:not-allowed}
.pc-pager .secondary-button:disabled:hover{border-color:hsl(var(--border));color:hsl(var(--foreground));background:hsl(var(--card)/.6);transform:none}

.pc-preview{display:flex;flex-direction:column;gap:7px}
.pc-preview .camera-preview{margin-top:0}
.pc-preview .camera-missing{flex-direction:column;gap:6px;padding:10px;text-align:center;line-height:1.6}
.pc-preview .camera-missing strong{font-size:10px;font-weight:500;color:hsl(var(--accent))}
.pc-preview .camera-missing span{font-size:8px;color:hsl(var(--muted-foreground))}
.pc-preview-retry{display:inline-flex;align-items:center;gap:5px;min-height:26px;padding:3px 8px;border:1px solid hsl(var(--accent)/.4);color:hsl(var(--accent));font-size:8px}
.pc-preview-foot{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}
.pc-preview-foot p{margin:0;font-size:8px;line-height:1.7;color:hsl(var(--muted-foreground))}
.pc-preview-foot .quiet-button{flex:none;display:inline-flex;align-items:center;gap:5px;font-size:8px}

.pc-detail .target-fields{margin:0}

/* 地球上的区域与聚合数量：只做标注，不接管点击。 */
.pc-map-badge{display:inline-flex;align-items:center;gap:4px;padding:2px 5px;border:1px solid hsl(var(--primary)/.32);border-radius:1px;background:hsl(var(--background)/.72);color:hsl(var(--primary));font-family:var(--font-mono);font-size:8px;line-height:1.4;white-space:nowrap;backdrop-filter:blur(4px)}
.pc-map-badge b{font-weight:500}
.pc-map-badge span{font-family:var(--font-sans);color:hsl(var(--muted-foreground))}
.pc-map-badge.region{color:hsl(var(--accent));border-color:hsl(var(--accent)/.36)}
/* 相交但没有取回数据的分区：标成待加载，而不是「没有点位」。 */
.pc-map-badge.notice{border-style:dashed;border-color:hsl(var(--muted-foreground)/.5);color:hsl(var(--muted-foreground)/.95);background:hsl(var(--card)/.75)}
.pc-map-badge.notice b{color:hsl(var(--muted-foreground))}

/* 城市 3D：附近摄像头入口，嵌在城市信息条内。 */
.city-camera-panel{display:flex;flex-direction:column;gap:7px;border-top:1px solid hsl(var(--primary)/.14);padding-top:7px}
.city-camera-toggle{display:flex;align-items:center;gap:7px;width:100%;padding:5px 0;border:0;background:transparent;color:hsl(var(--primary)/.9);font-size:9px;letter-spacing:.3px;cursor:pointer;text-align:left}
.city-camera-toggle small{margin-left:auto;font-size:8px;color:hsl(var(--muted-foreground));white-space:nowrap}
.city-camera-chevron{flex:none;color:hsl(var(--muted-foreground));transition:transform 180ms ease-out}
.city-camera-chevron.is-open{transform:rotate(180deg)}
.city-camera-toggle:hover{color:hsl(var(--primary))}
.city-camera-toggle:focus-visible{outline:1px solid hsl(var(--primary)/.7);outline-offset:2px}
.city-camera-body{display:flex;flex-direction:column;gap:8px;max-width:320px}
.city-camera-list{display:flex;flex-direction:column;margin:0;padding:0;list-style:none;max-height:190px;overflow:auto;overscroll-behavior:contain;border-top:1px solid hsl(var(--primary)/.1)}
.city-camera-list li{display:flex;align-items:center;gap:9px;padding:7px 1px;border-bottom:1px solid hsl(var(--primary)/.07);min-width:0}
.city-camera-main{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}
.city-camera-main strong{font-size:9px;font-weight:400;color:hsl(var(--foreground));overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.city-camera-main small{font-size:8px;color:hsl(var(--muted-foreground));overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.city-camera-list .quiet-button{flex:none;display:inline-flex;align-items:center;gap:4px;font-size:8px;color:hsl(var(--primary)/.85);border:1px solid hsl(var(--primary)/.25);padding:4px 7px;min-height:26px}
.city-camera-list .quiet-button:hover{background:hsl(var(--primary)/.1)}
.city-camera-note{margin:0;font-size:8px;line-height:1.7;color:hsl(var(--muted-foreground))}

@media(max-width:600px){
  .pc-row-main strong{font-size:11px}
  .pc-row-main small{font-size:9px}
  .pc-pager>span{display:none}
  .pc-preview-foot{flex-direction:column;gap:6px}
  .city-camera-body{max-width:none}
  .city-camera-list{max-height:150px}
  .city-camera-list .quiet-button{min-height:32px;padding:6px 9px}
  .city-camera-toggle{min-height:36px}
}

@media(prefers-reduced-motion:reduce){
  .pc-row,.city-camera-chevron{transition:none}
}/* 观察体验增强：视角模式控制、检测框覆盖层与周边接触名单。
   沿用观察台的深色监控台语言（语义 token、1px 直角、等宽数字），不新增配色。 */

/* ---- 视角模式控制 ---- */
.camera-mode-control{position:absolute;right:319px;bottom:296px;z-index:20;display:flex;flex-direction:column;gap:7px;max-width:236px;padding:9px 10px;border:1px solid hsl(var(--primary)/.16);border-radius:2px;background:hsl(var(--card)/.72);backdrop-filter:blur(12px)}
.camera-mode-control.is-inline{position:static;right:auto;bottom:auto;max-width:none;padding:0;border:0;background:transparent;backdrop-filter:none;flex-direction:row;flex-wrap:wrap;align-items:center;gap:6px}
.camera-mode-title{font-size:9px;color:hsl(var(--primary)/.8);letter-spacing:.4px}
.camera-mode-options{display:flex;flex-wrap:wrap;gap:2px}
.camera-mode-options button{padding:6px 9px;min-height:28px;font-size:9px;color:hsl(var(--muted-foreground));border:1px solid transparent;border-radius:1px;background:transparent;cursor:pointer;transition:background-color 160ms,color 160ms,border-color 160ms}
.camera-mode-options button:hover{color:hsl(var(--primary));background:hsl(var(--primary)/.08)}
.camera-mode-options button.active{color:hsl(var(--primary));border-color:hsl(var(--primary)/.45);background:hsl(var(--primary)/.05)}
.camera-mode-options button:focus-visible{outline:2px solid hsl(var(--ring));outline-offset:2px}
.camera-mode-options button:disabled{opacity:.4;cursor:not-allowed}
.camera-mode-options button:disabled:hover{background:transparent;color:hsl(var(--muted-foreground))}
.camera-mode-hint{margin:0;font-size:8px;line-height:1.7;color:hsl(var(--muted-foreground))}
.camera-mode-control.is-inline .camera-mode-hint{flex-basis:100%}
@media(max-width:1150px){.camera-mode-control:not(.is-inline){right:277px}}
@media(max-width:900px){.camera-mode-control:not(.is-inline){right:20px}}
@media(max-width:600px){.camera-mode-control:not(.is-inline){right:18px;bottom:300px;max-width:calc(100vw - 36px)}.camera-mode-options button{padding:7px 8px;min-height:32px}}

/* ---- 检测框覆盖层 ---- */
.detection-layer{position:absolute;inset:0;z-index:11;overflow:hidden;pointer-events:none}
.detection-box{position:absolute;width:26px;height:26px;transform:translate(-50%,-50%);border:1px solid currentColor;opacity:.45;transition:opacity 160ms ease-out;
  clip-path:polygon(0 0,35% 0,35% 14%,14% 14%,14% 35%,0 35%,0 0,100% 0,100% 35%,86% 35%,86% 14%,65% 14%,65% 0,100% 0,100% 100%,65% 100%,65% 86%,86% 86%,86% 65%,100% 65%,100% 100%,0 100%,0 65%,14% 65%,14% 86%,35% 86%,35% 100%,0 100%)}
.detection-box.is-selected{opacity:.95;box-shadow:0 0 13px currentColor}
@media(prefers-reduced-motion:reduce){.detection-box{transition:none}}

/* ---- 周边接触名单 ---- */
.contact-list{display:flex;flex-direction:column;gap:9px;margin-top:14px;padding-top:13px;border-top:1px solid hsl(var(--primary)/.12)}
.contact-list-head{display:flex;align-items:center;justify-content:space-between;gap:8px}
.contact-list-head h3{margin:0;font-size:11px;font-weight:500}
.contact-list-head>span{font-family:var(--font-mono);font-size:9px;color:hsl(var(--primary)/.7)}
.contact-note{margin:0;font-size:8px;line-height:1.7;color:hsl(var(--muted-foreground))}
.contact-rows{display:flex;flex-direction:column;list-style:none;margin:0;padding:0}
.contact-item{display:flex;align-items:center;gap:6px}
.contact-item .target-row{flex:1;min-width:0}
.contact-glyph{width:9px;height:9px;flex-shrink:0}
.contact-cockpit{flex-shrink:0;display:inline-flex;align-items:center;gap:4px;min-height:32px;padding:7px 9px;font-size:9px;color:hsl(var(--accent));border:1px solid hsl(var(--accent)/.35);border-radius:2px;background:hsl(var(--accent)/.05);cursor:pointer;transition:background-color 160ms,border-color 160ms}
.contact-cockpit:hover{border-color:hsl(var(--accent)/.7);background:hsl(var(--accent)/.14)}
.contact-cockpit:focus-visible{outline:2px solid hsl(var(--ring));outline-offset:2px}
@media(max-width:600px){.contact-cockpit span{display:none}.contact-cockpit{padding:8px}}

/* ---- 观察辅助条：视角模式 + 检测框开关 ----
   与 .map-tools 同一右侧竖列、排在它上方；桌面贴右栏，手机上收在底部控件之上。
   目标抽屉展开时让位（手机/平板），城市舞台内随地球 HUD 一起隐去。 */
.observer-aids{position:absolute;right:319px;bottom:296px;z-index:20;display:flex;flex-direction:column;gap:8px;width:236px;padding:9px 10px;border:1px solid hsl(var(--primary)/.16);border-radius:2px;background:hsl(var(--card)/.72);backdrop-filter:blur(12px)}
.observer-aids .camera-mode-control{max-width:none}
.aid-toggle{display:flex;align-items:center;justify-content:space-between;gap:9px;width:100%;min-height:32px;padding:6px 9px;font-size:9px;color:hsl(var(--muted-foreground));border:1px solid hsl(var(--primary)/.16);border-radius:1px;background:hsl(var(--primary)/.02);cursor:pointer;transition:color 160ms,border-color 160ms,background-color 160ms}
.aid-toggle:hover{color:hsl(var(--primary));border-color:hsl(var(--primary)/.5);background:hsl(var(--primary)/.08)}
.aid-toggle:focus-visible{outline:2px solid hsl(var(--ring));outline-offset:2px}
.aid-toggle[aria-pressed="true"]{color:hsl(var(--primary));border-color:hsl(var(--primary)/.5);background:hsl(var(--primary)/.07)}
.aid-toggle i{width:6px;height:6px;flex:none;border:1px solid currentColor;border-radius:50%}
.aid-toggle[aria-pressed="true"] i{background:currentColor;box-shadow:0 0 6px currentColor}
.aid-hint{margin:0;font-size:8px;line-height:1.7;color:hsl(var(--muted-foreground)/.9)}
.is-city3d .observer-aids{visibility:hidden;pointer-events:none}

@media(max-width:1150px){.observer-aids{right:277px}}
@media(max-width:900px){.observer-aids{right:20px}.observer-aids.is-panel-open{display:none}}
@media(max-width:600px){.observer-aids{right:18px;bottom:266px;width:min(240px,calc(100vw - 36px))}.observer-aids .camera-mode-options button{min-height:44px}.aid-toggle{min-height:44px;font-size:10px}}
*, ::before, ::after {
  --tw-border-spacing-x: 0;
  --tw-border-spacing-y: 0;
  --tw-translate-x: 0;
  --tw-translate-y: 0;
  --tw-rotate: 0;
  --tw-skew-x: 0;
  --tw-skew-y: 0;
  --tw-scale-x: 1;
  --tw-scale-y: 1;
  --tw-pan-x:  ;
  --tw-pan-y:  ;
  --tw-pinch-zoom:  ;
  --tw-scroll-snap-strictness: proximity;
  --tw-gradient-from-position:  ;
  --tw-gradient-via-position:  ;
  --tw-gradient-to-position:  ;
  --tw-ordinal:  ;
  --tw-slashed-zero:  ;
  --tw-numeric-figure:  ;
  --tw-numeric-spacing:  ;
  --tw-numeric-fraction:  ;
  --tw-ring-inset:  ;
  --tw-ring-offset-width: 0px;
  --tw-ring-offset-color: #fff;
  --tw-ring-color: rgb(59 130 246 / 0.5);
  --tw-ring-offset-shadow: 0 0 #0000;
  --tw-ring-shadow: 0 0 #0000;
  --tw-shadow: 0 0 #0000;
  --tw-shadow-colored: 0 0 #0000;
  --tw-blur:  ;
  --tw-brightness:  ;
  --tw-contrast:  ;
  --tw-grayscale:  ;
  --tw-hue-rotate:  ;
  --tw-invert:  ;
  --tw-saturate:  ;
  --tw-sepia:  ;
  --tw-drop-shadow:  ;
  --tw-backdrop-blur:  ;
  --tw-backdrop-brightness:  ;
  --tw-backdrop-contrast:  ;
  --tw-backdrop-grayscale:  ;
  --tw-backdrop-hue-rotate:  ;
  --tw-backdrop-invert:  ;
  --tw-backdrop-opacity:  ;
  --tw-backdrop-saturate:  ;
  --tw-backdrop-sepia:  ;
  --tw-contain-size:  ;
  --tw-contain-layout:  ;
  --tw-contain-paint:  ;
  --tw-contain-style:  ;
}

::backdrop {
  --tw-border-spacing-x: 0;
  --tw-border-spacing-y: 0;
  --tw-translate-x: 0;
  --tw-translate-y: 0;
  --tw-rotate: 0;
  --tw-skew-x: 0;
  --tw-skew-y: 0;
  --tw-scale-x: 1;
  --tw-scale-y: 1;
  --tw-pan-x:  ;
  --tw-pan-y:  ;
  --tw-pinch-zoom:  ;
  --tw-scroll-snap-strictness: proximity;
  --tw-gradient-from-position:  ;
  --tw-gradient-via-position:  ;
  --tw-gradient-to-position:  ;
  --tw-ordinal:  ;
  --tw-slashed-zero:  ;
  --tw-numeric-figure:  ;
  --tw-numeric-spacing:  ;
  --tw-numeric-fraction:  ;
  --tw-ring-inset:  ;
  --tw-ring-offset-width: 0px;
  --tw-ring-offset-color: #fff;
  --tw-ring-color: rgb(59 130 246 / 0.5);
  --tw-ring-offset-shadow: 0 0 #0000;
  --tw-ring-shadow: 0 0 #0000;
  --tw-shadow: 0 0 #0000;
  --tw-shadow-colored: 0 0 #0000;
  --tw-blur:  ;
  --tw-brightness:  ;
  --tw-contrast:  ;
  --tw-grayscale:  ;
  --tw-hue-rotate:  ;
  --tw-invert:  ;
  --tw-saturate:  ;
  --tw-sepia:  ;
  --tw-drop-shadow:  ;
  --tw-backdrop-blur:  ;
  --tw-backdrop-brightness:  ;
  --tw-backdrop-contrast:  ;
  --tw-backdrop-grayscale:  ;
  --tw-backdrop-hue-rotate:  ;
  --tw-backdrop-invert:  ;
  --tw-backdrop-opacity:  ;
  --tw-backdrop-saturate:  ;
  --tw-backdrop-sepia:  ;
  --tw-contain-size:  ;
  --tw-contain-layout:  ;
  --tw-contain-paint:  ;
  --tw-contain-style:  ;
}/*
! tailwindcss v3.4.19 | MIT License | https://tailwindcss.com
*//*
1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4)
2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116)
*/

*,
::before,
::after {
  box-sizing: border-box; /* 1 */
  border-width: 0; /* 2 */
  border-style: solid; /* 2 */
  border-color: #e5e7eb; /* 2 */
}

::before,
::after {
  --tw-content: '';
}

/*
1. Use a consistent sensible line-height in all browsers.
2. Prevent adjustments of font size after orientation changes in iOS.
3. Use a more readable tab size.
4. Use the user's configured `sans` font-family by default.
5. Use the user's configured `sans` font-feature-settings by default.
6. Use the user's configured `sans` font-variation-settings by default.
7. Disable tap highlights on iOS
*/

html,
:host {
  line-height: 1.5; /* 1 */
  -webkit-text-size-adjust: 100%; /* 2 */
  -moz-tab-size: 4; /* 3 */
  -o-tab-size: 4;
     tab-size: 4; /* 3 */
  font-family: var(--font-sans); /* 4 */
  font-feature-settings: normal; /* 5 */
  font-variation-settings: normal; /* 6 */
  -webkit-tap-highlight-color: transparent; /* 7 */
}

/*
1. Remove the margin in all browsers.
2. Inherit line-height from `html` so users can set them as a class directly on the `html` element.
*/

body {
  margin: 0; /* 1 */
  line-height: inherit; /* 2 */
}

/*
1. Add the correct height in Firefox.
2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655)
3. Ensure horizontal rules are visible by default.
*/

hr {
  height: 0; /* 1 */
  color: inherit; /* 2 */
  border-top-width: 1px; /* 3 */
}

/*
Add the correct text decoration in Chrome, Edge, and Safari.
*/

abbr:where([title]) {
  -webkit-text-decoration: underline dotted;
          text-decoration: underline dotted;
}

/*
Remove the default font size and weight for headings.
*/

h1,
h2,
h3,
h4,
h5,
h6 {
  font-size: inherit;
  font-weight: inherit;
}

/*
Reset links to optimize for opt-in styling instead of opt-out.
*/

a {
  color: inherit;
  text-decoration: inherit;
}

/*
Add the correct font weight in Edge and Safari.
*/

b,
strong {
  font-weight: bolder;
}

/*
1. Use the user's configured `mono` font-family by default.
2. Use the user's configured `mono` font-feature-settings by default.
3. Use the user's configured `mono` font-variation-settings by default.
4. Correct the odd `em` font sizing in all browsers.
*/

code,
kbd,
samp,
pre {
  font-family: var(--font-mono); /* 1 */
  font-feature-settings: normal; /* 2 */
  font-variation-settings: normal; /* 3 */
  font-size: 1em; /* 4 */
}

/*
Add the correct font size in all browsers.
*/

small {
  font-size: 80%;
}

/*
Prevent `sub` and `sup` elements from affecting the line height in all browsers.
*/

sub,
sup {
  font-size: 75%;
  line-height: 0;
  position: relative;
  vertical-align: baseline;
}

sub {
  bottom: -0.25em;
}

sup {
  top: -0.5em;
}

/*
1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297)
2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016)
3. Remove gaps between table borders by default.
*/

table {
  text-indent: 0; /* 1 */
  border-color: inherit; /* 2 */
  border-collapse: collapse; /* 3 */
}

/*
1. Change the font styles in all browsers.
2. Remove the margin in Firefox and Safari.
3. Remove default padding in all browsers.
*/

button,
input,
optgroup,
select,
textarea {
  font-family: inherit; /* 1 */
  font-feature-settings: inherit; /* 1 */
  font-variation-settings: inherit; /* 1 */
  font-size: 100%; /* 1 */
  font-weight: inherit; /* 1 */
  line-height: inherit; /* 1 */
  letter-spacing: inherit; /* 1 */
  color: inherit; /* 1 */
  margin: 0; /* 2 */
  padding: 0; /* 3 */
}

/*
Remove the inheritance of text transform in Edge and Firefox.
*/

button,
select {
  text-transform: none;
}

/*
1. Correct the inability to style clickable types in iOS and Safari.
2. Remove default button styles.
*/

button,
input:where([type='button']),
input:where([type='reset']),
input:where([type='submit']) {
  -webkit-appearance: button; /* 1 */
  background-color: transparent; /* 2 */
  background-image: none; /* 2 */
}

/*
Use the modern Firefox focus style for all focusable elements.
*/

:-moz-focusring {
  outline: auto;
}

/*
Remove the additional `:invalid` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737)
*/

:-moz-ui-invalid {
  box-shadow: none;
}

/*
Add the correct vertical alignment in Chrome and Firefox.
*/

progress {
  vertical-align: baseline;
}

/*
Correct the cursor style of increment and decrement buttons in Safari.
*/

::-webkit-inner-spin-button,
::-webkit-outer-spin-button {
  height: auto;
}

/*
1. Correct the odd appearance in Chrome and Safari.
2. Correct the outline style in Safari.
*/

[type='search'] {
  -webkit-appearance: textfield; /* 1 */
  outline-offset: -2px; /* 2 */
}

/*
Remove the inner padding in Chrome and Safari on macOS.
*/

::-webkit-search-decoration {
  -webkit-appearance: none;
}

/*
1. Correct the inability to style clickable types in iOS and Safari.
2. Change font properties to `inherit` in Safari.
*/

::-webkit-file-upload-button {
  -webkit-appearance: button; /* 1 */
  font: inherit; /* 2 */
}

/*
Add the correct display in Chrome and Safari.
*/

summary {
  display: list-item;
}

/*
Removes the default spacing and border for appropriate elements.
*/

blockquote,
dl,
dd,
h1,
h2,
h3,
h4,
h5,
h6,
hr,
figure,
p,
pre {
  margin: 0;
}

fieldset {
  margin: 0;
  padding: 0;
}

legend {
  padding: 0;
}

ol,
ul,
menu {
  list-style: none;
  margin: 0;
  padding: 0;
}

/*
Reset default styling for dialogs.
*/
dialog {
  padding: 0;
}

/*
Prevent resizing textareas horizontally by default.
*/

textarea {
  resize: vertical;
}

/*
1. Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300)
2. Set the default placeholder color to the user's configured gray 400 color.
*/

input::-moz-placeholder, textarea::-moz-placeholder {
  opacity: 1; /* 1 */
  color: #9ca3af; /* 2 */
}

input::placeholder,
textarea::placeholder {
  opacity: 1; /* 1 */
  color: #9ca3af; /* 2 */
}

/*
Set the default cursor for buttons.
*/

button,
[role="button"] {
  cursor: pointer;
}

/*
Make sure disabled buttons don't get the pointer cursor.
*/
:disabled {
  cursor: default;
}

/*
1. Make replaced elements `display: block` by default. (https://github.com/mozdevs/cssremedy/issues/14)
2. Add `vertical-align: middle` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210)
   This can trigger a poorly considered lint error in some tools but is included by design.
*/

img,
svg,
video,
canvas,
audio,
iframe,
embed,
object {
  display: block; /* 1 */
  vertical-align: middle; /* 2 */
}

/*
Constrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14)
*/

img,
video {
  max-width: 100%;
  height: auto;
}

/* Make elements with the HTML hidden attribute stay hidden by default */
[hidden]:where(:not([hidden="until-found"])) {
  display: none;
}
  :root, .dark {
    --background: 212 38% 3%;
    --foreground: 190 18% 86%;
    --card: 205 32% 6%;
    --card-foreground: 190 18% 86%;
    --popover: 205 32% 7%;
    --popover-foreground: 190 18% 86%;
    --primary: 186 78% 56%;
    --primary-foreground: 212 38% 4%;
    --secondary: 205 26% 11%;
    --secondary-foreground: 190 18% 86%;
    --muted: 205 22% 10%;
    --muted-foreground: 196 12% 59%;
    --accent: 38 92% 58%;
    --accent-foreground: 212 38% 4%;
    --destructive: 4 80% 58%;
    --destructive-foreground: 190 18% 96%;
    --border: 196 22% 18%;
    --input: 196 22% 20%;
    --ring: 186 78% 56%;
    --chart-1: 186 85% 62%;
    --chart-2: 198 45% 68%;
    --chart-3: 185 30% 88%;
    --chart-4: 38 92% 58%;
    --chart-5: 18 90% 58%;
    --sidebar: 205 32% 6%;
    --sidebar-foreground: 190 18% 86%;
    --sidebar-primary: 186 78% 56%;
    --sidebar-primary-foreground: 212 38% 4%;
    --sidebar-accent: 205 26% 11%;
    --sidebar-accent-foreground: 186 78% 56%;
    --sidebar-border: 196 22% 18%;
    --sidebar-ring: 186 78% 56%;
    --font-sans: 'Noto Sans SC', 'PingFang SC', 'Microsoft YaHei', sans-serif;
    --font-serif: Georgia, serif;
    --font-mono: 'IBM Plex Mono', Consolas, monospace;
    --radius: 0.125rem;
    --shadow-2xs: 0 0 0 1px hsl(var(--primary) / .04);
    --shadow-xs: 0 2px 8px hsl(var(--background) / .3);
    --shadow-sm: 0 4px 16px hsl(var(--background) / .4);
    --shadow: 0 0 0 1px hsl(var(--primary) / .06), 0 16px 48px hsl(var(--background) / .6);
    --shadow-md: 0 0 0 1px hsl(var(--primary) / .08), 0 20px 60px hsl(var(--background) / .6);
    --shadow-lg: 0 20px 60px hsl(var(--background) / .7);
    --shadow-xl: 0 24px 70px hsl(var(--background) / .8);
    --shadow-2xl: 0 30px 90px hsl(var(--background) / .9);
  }
  * {
  border-color: hsl(var(--border));
}
  body {
  background-color: hsl(var(--background));
  font-family: var(--font-sans);
  color: hsl(var(--foreground)); margin: 0; color-scheme: dark;
}
  button, input, select { font: inherit; }
  button, a, input, select { outline-offset: 4px; }
  :focus-visible { outline: 2px solid hsl(var(--ring)); }
  button { -webkit-tap-highlight-color: transparent; }
.\!container {
  width: 100% !important;
  margin-right: auto !important;
  margin-left: auto !important;
  padding-right: 2rem !important;
  padding-left: 2rem !important;
}
.container {
  width: 100%;
  margin-right: auto;
  margin-left: auto;
  padding-right: 2rem;
  padding-left: 2rem;
}
@media (min-width: 1440px) {

  .\!container {
    max-width: 1440px !important;
  }

  .container {
    max-width: 1440px;
  }
}
.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border-width: 0;
}
.pointer-events-none {
  pointer-events: none;
}
.\!visible {
  visibility: visible !important;
}
.visible {
  visibility: visible;
}
.invisible {
  visibility: hidden;
}
.static {
  position: static;
}
.fixed {
  position: fixed;
}
.absolute {
  position: absolute;
}
.relative {
  position: relative;
}
.inset-0 {
  inset: 0px;
}
.inset-x-0 {
  left: 0px;
  right: 0px;
}
.inset-y-0 {
  top: 0px;
  bottom: 0px;
}
.-bottom-12 {
  bottom: -3rem;
}
.-left-12 {
  left: -3rem;
}
.-right-12 {
  right: -3rem;
}
.-top-12 {
  top: -3rem;
}
.bottom-0 {
  bottom: 0px;
}
.left-0 {
  left: 0px;
}
.left-1\/2 {
  left: 50%;
}
.left-2 {
  left: 0.5rem;
}
.left-\[50\%\] {
  left: 50%;
}
.right-0 {
  right: 0px;
}
.right-4 {
  right: 1rem;
}
.top-0 {
  top: 0px;
}
.top-1\/2 {
  top: 50%;
}
.top-4 {
  top: 1rem;
}
.top-\[1px\] {
  top: 1px;
}
.top-\[50\%\] {
  top: 50%;
}
.top-\[60\%\] {
  top: 60%;
}
.top-full {
  top: 100%;
}
.isolate {
  isolation: isolate;
}
.z-10 {
  z-index: 10;
}
.z-50 {
  z-index: 50;
}
.z-\[1\] {
  z-index: 1;
}
.col-start-2 {
  grid-column-start: 2;
}
.-mx-1 {
  margin-left: -0.25rem;
  margin-right: -0.25rem;
}
.mx-auto {
  margin-left: auto;
  margin-right: auto;
}
.my-1 {
  margin-top: 0.25rem;
  margin-bottom: 0.25rem;
}
.-ml-4 {
  margin-left: -1rem;
}
.-mt-4 {
  margin-top: -1rem;
}
.ml-1 {
  margin-left: 0.25rem;
}
.ml-auto {
  margin-left: auto;
}
.mr-2 {
  margin-right: 0.5rem;
}
.mt-1\.5 {
  margin-top: 0.375rem;
}
.mt-2 {
  margin-top: 0.5rem;
}
.mt-4 {
  margin-top: 1rem;
}
.mt-auto {
  margin-top: auto;
}
.line-clamp-1 {
  overflow: hidden;
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 1;
}
.block {
  display: block;
}
.inline {
  display: inline;
}
.flex {
  display: flex;
}
.inline-flex {
  display: inline-flex;
}
.table {
  display: table;
}
.grid {
  display: grid;
}
.hidden {
  display: none;
}
.aspect-square {
  aspect-ratio: 1 / 1;
}
.size-2 {
  width: 0.5rem;
  height: 0.5rem;
}
.size-2\.5 {
  width: 0.625rem;
  height: 0.625rem;
}
.size-3 {
  width: 0.75rem;
  height: 0.75rem;
}
.size-3\.5 {
  width: 0.875rem;
  height: 0.875rem;
}
.size-4 {
  width: 1rem;
  height: 1rem;
}
.size-8 {
  width: 2rem;
  height: 2rem;
}
.size-9 {
  width: 2.25rem;
  height: 2.25rem;
}
.size-full {
  width: 100%;
  height: 100%;
}
.h-1\.5 {
  height: 0.375rem;
}
.h-10 {
  height: 2.5rem;
}
.h-11 {
  height: 2.75rem;
}
.h-12 {
  height: 3rem;
}
.h-2 {
  height: 0.5rem;
}
.h-2\.5 {
  height: 0.625rem;
}
.h-3\.5 {
  height: 0.875rem;
}
.h-4 {
  height: 1rem;
}
.h-8 {
  height: 2rem;
}
.h-9 {
  height: 2.25rem;
}
.h-\[1\.15rem\] {
  height: 1.15rem;
}
.h-\[var\(--cell-size\)\] {
  height: var(--cell-size);
}
.h-\[var\(--radix-navigation-menu-viewport-height\)\] {
  height: var(--radix-navigation-menu-viewport-height);
}
.h-\[var\(--radix-select-trigger-height\)\] {
  height: var(--radix-select-trigger-height);
}
.h-auto {
  height: auto;
}
.h-full {
  height: 100%;
}
.h-px {
  height: 1px;
}
.max-h-\[--radix-select-content-available-height\] {
  max-height: var(--radix-select-content-available-height);
}
.max-h-\[300px\] {
  max-height: 300px;
}
.max-h-\[var\(--radix-context-menu-content-available-height\)\] {
  max-height: var(--radix-context-menu-content-available-height);
}
.min-h-16 {
  min-height: 4rem;
}
.min-h-4 {
  min-height: 1rem;
}
.min-h-screen {
  min-height: 100vh;
}
.w-1\.5 {
  width: 0.375rem;
}
.w-10 {
  width: 2.5rem;
}
.w-2 {
  width: 0.5rem;
}
.w-2\.5 {
  width: 0.625rem;
}
.w-3 {
  width: 0.75rem;
}
.w-3\.5 {
  width: 0.875rem;
}
.w-3\/4 {
  width: 75%;
}
.w-4 {
  width: 1rem;
}
.w-64 {
  width: 16rem;
}
.w-72 {
  width: 18rem;
}
.w-8 {
  width: 2rem;
}
.w-9 {
  width: 2.25rem;
}
.w-\[280px\] {
  width: 280px;
}
.w-\[min\(92vw\2c 560px\)\] {
  width: min(92vw, 560px);
}
.w-\[var\(--cell-size\)\] {
  width: var(--cell-size);
}
.w-auto {
  width: auto;
}
.w-fit {
  width: -moz-fit-content;
  width: fit-content;
}
.w-full {
  width: 100%;
}
.w-max {
  width: -moz-max-content;
  width: max-content;
}
.w-px {
  width: 1px;
}
.min-w-0 {
  min-width: 0px;
}
.min-w-\[12rem\] {
  min-width: 12rem;
}
.min-w-\[8rem\] {
  min-width: 8rem;
}
.min-w-\[var\(--cell-size\)\] {
  min-width: var(--cell-size);
}
.min-w-\[var\(--radix-select-trigger-width\)\] {
  min-width: var(--radix-select-trigger-width);
}
.max-w-\[calc\(100\%-2rem\)\] {
  max-width: calc(100% - 2rem);
}
.max-w-lg {
  max-width: 32rem;
}
.max-w-max {
  max-width: -moz-max-content;
  max-width: max-content;
}
.flex-1 {
  flex: 1 1 0%;
}
.shrink-0 {
  flex-shrink: 0;
}
.grow {
  flex-grow: 1;
}
.grow-0 {
  flex-grow: 0;
}
.basis-full {
  flex-basis: 100%;
}
.caption-bottom {
  caption-side: bottom;
}
.border-collapse {
  border-collapse: collapse;
}
.origin-\[--radix-popover-content-transform-origin\] {
  transform-origin: var(--radix-popover-content-transform-origin);
}
.origin-\[--radix-select-content-transform-origin\] {
  transform-origin: var(--radix-select-content-transform-origin);
}
.-translate-x-1\/2 {
  --tw-translate-x: -50%;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.-translate-y-1\/2 {
  --tw-translate-y: -50%;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.translate-x-\[-50\%\] {
  --tw-translate-x: -50%;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.translate-y-0\.5 {
  --tw-translate-y: 0.125rem;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.translate-y-\[-50\%\] {
  --tw-translate-y: -50%;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.translate-y-\[calc\(-50\%_-_2px\)\] {
  --tw-translate-y: calc(-50% - 2px);
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.rotate-45 {
  --tw-rotate: 45deg;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.rotate-90 {
  --tw-rotate: 90deg;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.transform {
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
@keyframes caret-blink {

  0%,70%,100% {
    opacity: 1;
  }

  20%,50% {
    opacity: 0;
  }
}
.animate-caret-blink {
  animation: caret-blink 1.25s ease-out infinite;
}
@keyframes pulse {

  50% {
    opacity: .5;
  }
}
.animate-pulse {
  animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
}
@keyframes spin {

  to {
    transform: rotate(360deg);
  }
}
.animate-spin {
  animation: spin 1s linear infinite;
}
.cursor-default {
  cursor: default;
}
.touch-none {
  touch-action: none;
}
.select-none {
  -webkit-user-select: none;
     -moz-user-select: none;
          user-select: none;
}
.resize {
  resize: both;
}
.scroll-py-1 {
  scroll-padding-top: 0.25rem;
  scroll-padding-bottom: 0.25rem;
}
.list-none {
  list-style-type: none;
}
.grid-cols-\[0_1fr\] {
  grid-template-columns: 0 1fr;
}
.flex-row {
  flex-direction: row;
}
.flex-col {
  flex-direction: column;
}
.flex-col-reverse {
  flex-direction: column-reverse;
}
.flex-wrap {
  flex-wrap: wrap;
}
.items-start {
  align-items: flex-start;
}
.items-end {
  align-items: flex-end;
}
.items-center {
  align-items: center;
}
.justify-start {
  justify-content: flex-start;
}
.justify-center {
  justify-content: center;
}
.justify-between {
  justify-content: space-between;
}
.justify-items-start {
  justify-items: start;
}
.gap-1 {
  gap: 0.25rem;
}
.gap-1\.5 {
  gap: 0.375rem;
}
.gap-2 {
  gap: 0.5rem;
}
.gap-4 {
  gap: 1rem;
}
.gap-5 {
  gap: 1.25rem;
}
.gap-y-0\.5 {
  row-gap: 0.125rem;
}
.space-y-1\.5 > :not([hidden]) ~ :not([hidden]) {
  --tw-space-y-reverse: 0;
  margin-top: calc(0.375rem * calc(1 - var(--tw-space-y-reverse)));
  margin-bottom: calc(0.375rem * var(--tw-space-y-reverse));
}
.space-y-2 > :not([hidden]) ~ :not([hidden]) {
  --tw-space-y-reverse: 0;
  margin-top: calc(0.5rem * calc(1 - var(--tw-space-y-reverse)));
  margin-bottom: calc(0.5rem * var(--tw-space-y-reverse));
}
.overflow-auto {
  overflow: auto;
}
.overflow-hidden {
  overflow: hidden;
}
.overflow-y-auto {
  overflow-y: auto;
}
.overflow-x-hidden {
  overflow-x: hidden;
}
.whitespace-nowrap {
  white-space: nowrap;
}
.text-balance {
  text-wrap: balance;
}
.break-words {
  overflow-wrap: break-word;
}
.rounded-\[2px\] {
  border-radius: 2px;
}
.rounded-\[inherit\] {
  border-radius: inherit;
}
.rounded-full {
  border-radius: 9999px;
}
.rounded-lg {
  border-radius: var(--radius);
}
.rounded-md {
  border-radius: calc(var(--radius) - 2px);
}
.rounded-none {
  border-radius: 0px;
}
.rounded-sm {
  border-radius: calc(var(--radius) - 4px);
}
.rounded-l-md {
  border-top-left-radius: calc(var(--radius) - 2px);
  border-bottom-left-radius: calc(var(--radius) - 2px);
}
.rounded-r-md {
  border-top-right-radius: calc(var(--radius) - 2px);
  border-bottom-right-radius: calc(var(--radius) - 2px);
}
.rounded-tl-sm {
  border-top-left-radius: calc(var(--radius) - 4px);
}
.border {
  border-width: 1px;
}
.border-y {
  border-top-width: 1px;
  border-bottom-width: 1px;
}
.border-b {
  border-bottom-width: 1px;
}
.border-l {
  border-left-width: 1px;
}
.border-r {
  border-right-width: 1px;
}
.border-t {
  border-top-width: 1px;
}
.border-input {
  border-color: hsl(var(--input));
}
.border-primary {
  border-color: hsl(var(--primary));
}
.border-primary\/35 {
  border-color: hsl(var(--primary) / 0.35);
}
.border-primary\/40 {
  border-color: hsl(var(--primary) / 0.4);
}
.border-transparent {
  border-color: transparent;
}
.border-l-transparent {
  border-left-color: transparent;
}
.border-t-transparent {
  border-top-color: transparent;
}
.bg-accent {
  background-color: hsl(var(--accent));
}
.bg-background {
  background-color: hsl(var(--background));
}
.bg-background\/80 {
  background-color: hsl(var(--background) / 0.8);
}
.bg-background\/85 {
  background-color: hsl(var(--background) / 0.85);
}
.bg-black\/50 {
  background-color: rgb(0 0 0 / 0.5);
}
.bg-border {
  background-color: hsl(var(--border));
}
.bg-card {
  background-color: hsl(var(--card));
}
.bg-destructive {
  background-color: hsl(var(--destructive));
}
.bg-foreground {
  background-color: hsl(var(--foreground));
}
.bg-muted {
  background-color: hsl(var(--muted));
}
.bg-muted\/50 {
  background-color: hsl(var(--muted) / 0.5);
}
.bg-popover {
  background-color: hsl(var(--popover));
}
.bg-primary {
  background-color: hsl(var(--primary));
}
.bg-primary\/20 {
  background-color: hsl(var(--primary) / 0.2);
}
.bg-secondary {
  background-color: hsl(var(--secondary));
}
.bg-transparent {
  background-color: transparent;
}
.fill-current {
  fill: currentColor;
}
.fill-foreground {
  fill: hsl(var(--foreground));
}
.p-0 {
  padding: 0px;
}
.p-1 {
  padding: 0.25rem;
}
.p-2 {
  padding: 0.5rem;
}
.p-3 {
  padding: 0.75rem;
}
.p-4 {
  padding: 1rem;
}
.p-6 {
  padding: 1.5rem;
}
.p-px {
  padding: 1px;
}
.px-2 {
  padding-left: 0.5rem;
  padding-right: 0.5rem;
}
.px-2\.5 {
  padding-left: 0.625rem;
  padding-right: 0.625rem;
}
.px-3 {
  padding-left: 0.75rem;
  padding-right: 0.75rem;
}
.px-3\.5 {
  padding-left: 0.875rem;
  padding-right: 0.875rem;
}
.px-4 {
  padding-left: 1rem;
  padding-right: 1rem;
}
.px-5 {
  padding-left: 1.25rem;
  padding-right: 1.25rem;
}
.px-6 {
  padding-left: 1.5rem;
  padding-right: 1.5rem;
}
.px-8 {
  padding-left: 2rem;
  padding-right: 2rem;
}
.px-\[var\(--cell-size\)\] {
  padding-left: var(--cell-size);
  padding-right: var(--cell-size);
}
.py-0\.5 {
  padding-top: 0.125rem;
  padding-bottom: 0.125rem;
}
.py-1 {
  padding-top: 0.25rem;
  padding-bottom: 0.25rem;
}
.py-1\.5 {
  padding-top: 0.375rem;
  padding-bottom: 0.375rem;
}
.py-2 {
  padding-top: 0.5rem;
  padding-bottom: 0.5rem;
}
.py-3 {
  padding-top: 0.75rem;
  padding-bottom: 0.75rem;
}
.py-4 {
  padding-top: 1rem;
  padding-bottom: 1rem;
}
.py-6 {
  padding-top: 1.5rem;
  padding-bottom: 1.5rem;
}
.pb-4 {
  padding-bottom: 1rem;
}
.pl-2 {
  padding-left: 0.5rem;
}
.pl-2\.5 {
  padding-left: 0.625rem;
}
.pl-4 {
  padding-left: 1rem;
}
.pl-8 {
  padding-left: 2rem;
}
.pr-1 {
  padding-right: 0.25rem;
}
.pr-2 {
  padding-right: 0.5rem;
}
.pr-2\.5 {
  padding-right: 0.625rem;
}
.pt-0 {
  padding-top: 0px;
}
.pt-4 {
  padding-top: 1rem;
}
.text-left {
  text-align: left;
}
.text-center {
  text-align: center;
}
.align-middle {
  vertical-align: middle;
}
.font-mono {
  font-family: var(--font-mono);
}
.text-2xl {
  font-size: 1.5rem;
  line-height: 2rem;
}
.text-\[0\.8rem\] {
  font-size: 0.8rem;
}
.text-\[11px\] {
  font-size: 11px;
}
.text-base {
  font-size: 1rem;
  line-height: 1.5rem;
}
.text-lg {
  font-size: 1.125rem;
  line-height: 1.75rem;
}
.text-sm {
  font-size: 0.875rem;
  line-height: 1.25rem;
}
.text-xs {
  font-size: 0.75rem;
  line-height: 1rem;
}
.font-medium {
  font-weight: 500;
}
.font-normal {
  font-weight: 400;
}
.font-semibold {
  font-weight: 600;
}
.leading-none {
  line-height: 1;
}
.leading-relaxed {
  line-height: 1.625;
}
.tracking-tight {
  letter-spacing: -0.025em;
}
.tracking-widest {
  letter-spacing: 0.1em;
}
.text-accent-foreground {
  color: hsl(var(--accent-foreground));
}
.text-background {
  color: hsl(var(--background));
}
.text-card-foreground {
  color: hsl(var(--card-foreground));
}
.text-current {
  color: currentColor;
}
.text-destructive {
  color: hsl(var(--destructive));
}
.text-destructive-foreground {
  color: hsl(var(--destructive-foreground));
}
.text-foreground {
  color: hsl(var(--foreground));
}
.text-foreground\/85 {
  color: hsl(var(--foreground) / 0.85);
}
.text-muted-foreground {
  color: hsl(var(--muted-foreground));
}
.text-popover-foreground {
  color: hsl(var(--popover-foreground));
}
.text-primary {
  color: hsl(var(--primary));
}
.text-primary-foreground {
  color: hsl(var(--primary-foreground));
}
.text-secondary-foreground {
  color: hsl(var(--secondary-foreground));
}
.underline-offset-4 {
  text-underline-offset: 4px;
}
.opacity-0 {
  opacity: 0;
}
.opacity-50 {
  opacity: 0.5;
}
.opacity-60 {
  opacity: 0.6;
}
.opacity-70 {
  opacity: 0.7;
}
.shadow {
  --tw-shadow: var(--shadow);
  --tw-shadow-colored: var(--shadow);
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}
.shadow-lg {
  --tw-shadow: var(--shadow-lg);
  --tw-shadow-colored: var(--shadow-lg);
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}
.shadow-md {
  --tw-shadow: var(--shadow-md);
  --tw-shadow-colored: var(--shadow-md);
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}
.shadow-sm {
  --tw-shadow: var(--shadow-sm);
  --tw-shadow-colored: var(--shadow-sm);
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}
.shadow-xs {
  --tw-shadow: var(--shadow-xs);
  --tw-shadow-colored: var(--shadow-xs);
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}
.outline-none {
  outline: 2px solid transparent;
  outline-offset: 2px;
}
.outline {
  outline-style: solid;
}
.ring {
  --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
  --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);
  box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
}
.ring-0 {
  --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
  --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);
  box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
}
.ring-ring\/50 {
  --tw-ring-color: hsl(var(--ring) / 0.5);
}
.ring-offset-background {
  --tw-ring-offset-color: hsl(var(--background));
}
.filter {
  filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
}
.backdrop-blur-sm {
  --tw-backdrop-blur: blur(4px);
  backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);
}
.transition {
  transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 150ms;
}
.transition-\[color\2c box-shadow\] {
  transition-property: color,box-shadow;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 150ms;
}
.transition-all {
  transition-property: all;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 150ms;
}
.transition-colors {
  transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 150ms;
}
.transition-opacity {
  transition-property: opacity;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 150ms;
}
.transition-transform {
  transition-property: transform;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 150ms;
}
.duration-1000 {
  transition-duration: 1000ms;
}
.duration-200 {
  transition-duration: 200ms;
}
.duration-300 {
  transition-duration: 300ms;
}
.ease-in-out {
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
}
@keyframes enter {

  from {
    opacity: var(--tw-enter-opacity, 1);
    transform: translate3d(var(--tw-enter-translate-x, 0), var(--tw-enter-translate-y, 0), 0) scale3d(var(--tw-enter-scale, 1), var(--tw-enter-scale, 1), var(--tw-enter-scale, 1)) rotate(var(--tw-enter-rotate, 0));
  }
}
@keyframes exit {

  to {
    opacity: var(--tw-exit-opacity, 1);
    transform: translate3d(var(--tw-exit-translate-x, 0), var(--tw-exit-translate-y, 0), 0) scale3d(var(--tw-exit-scale, 1), var(--tw-exit-scale, 1), var(--tw-exit-scale, 1)) rotate(var(--tw-exit-rotate, 0));
  }
}
.animate-in {
  animation-name: enter;
  animation-duration: 150ms;
  --tw-enter-opacity: initial;
  --tw-enter-scale: initial;
  --tw-enter-rotate: initial;
  --tw-enter-translate-x: initial;
  --tw-enter-translate-y: initial;
}
.fade-in-0 {
  --tw-enter-opacity: 0;
}
.zoom-in-95 {
  --tw-enter-scale: .95;
}
.duration-1000 {
  animation-duration: 1000ms;
}
.duration-200 {
  animation-duration: 200ms;
}
.duration-300 {
  animation-duration: 300ms;
}
.ease-in-out {
  animation-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
}
.running {
  animation-play-state: running;
}
.\[--cell-size\:calc\(var\(--spacing\)\*8\)\] {
  --cell-size: calc(var(--spacing) * 8);
}
.\[transform-origin\:var\(--radix-tooltip-content-transform-origin\)\] {
  transform-origin: var(--radix-tooltip-content-transform-origin);
}
.file\:border-0::file-selector-button {
  border-width: 0px;
}
.file\:bg-transparent::file-selector-button {
  background-color: transparent;
}
.file\:text-sm::file-selector-button {
  font-size: 0.875rem;
  line-height: 1.25rem;
}
.file\:font-medium::file-selector-button {
  font-weight: 500;
}
.file\:text-foreground::file-selector-button {
  color: hsl(var(--foreground));
}
.placeholder\:text-muted-foreground::-moz-placeholder {
  color: hsl(var(--muted-foreground));
}
.placeholder\:text-muted-foreground::placeholder {
  color: hsl(var(--muted-foreground));
}
.after\:absolute::after {
  content: var(--tw-content);
  position: absolute;
}
.after\:inset-y-0::after {
  content: var(--tw-content);
  top: 0px;
  bottom: 0px;
}
.after\:left-1\/2::after {
  content: var(--tw-content);
  left: 50%;
}
.after\:w-1::after {
  content: var(--tw-content);
  width: 0.25rem;
}
.after\:-translate-x-1\/2::after {
  content: var(--tw-content);
  --tw-translate-x: -50%;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.first\:rounded-l-md:first-child {
  border-top-left-radius: calc(var(--radius) - 2px);
  border-bottom-left-radius: calc(var(--radius) - 2px);
}
.first\:border-l:first-child {
  border-left-width: 1px;
}
.last\:rounded-r-md:last-child {
  border-top-right-radius: calc(var(--radius) - 2px);
  border-bottom-right-radius: calc(var(--radius) - 2px);
}
.last\:border-b-0:last-child {
  border-bottom-width: 0px;
}
.hover\:bg-accent:hover {
  background-color: hsl(var(--accent));
}
.hover\:bg-destructive\/80:hover {
  background-color: hsl(var(--destructive) / 0.8);
}
.hover\:bg-destructive\/90:hover {
  background-color: hsl(var(--destructive) / 0.9);
}
.hover\:bg-muted:hover {
  background-color: hsl(var(--muted));
}
.hover\:bg-muted\/50:hover {
  background-color: hsl(var(--muted) / 0.5);
}
.hover\:bg-primary\/10:hover {
  background-color: hsl(var(--primary) / 0.1);
}
.hover\:bg-primary\/80:hover {
  background-color: hsl(var(--primary) / 0.8);
}
.hover\:bg-primary\/90:hover {
  background-color: hsl(var(--primary) / 0.9);
}
.hover\:bg-secondary\/80:hover {
  background-color: hsl(var(--secondary) / 0.8);
}
.hover\:text-accent-foreground:hover {
  color: hsl(var(--accent-foreground));
}
.hover\:text-foreground:hover {
  color: hsl(var(--foreground));
}
.hover\:text-muted-foreground:hover {
  color: hsl(var(--muted-foreground));
}
.hover\:underline:hover {
  text-decoration-line: underline;
}
.hover\:opacity-100:hover {
  opacity: 1;
}
.hover\:ring-4:hover {
  --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
  --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);
  box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
}
.focus\:bg-accent:focus {
  background-color: hsl(var(--accent));
}
.focus\:text-accent-foreground:focus {
  color: hsl(var(--accent-foreground));
}
.focus\:outline-none:focus {
  outline: 2px solid transparent;
  outline-offset: 2px;
}
.focus\:ring-2:focus {
  --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
  --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);
  box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
}
.focus\:ring-ring:focus {
  --tw-ring-color: hsl(var(--ring));
}
.focus\:ring-offset-2:focus {
  --tw-ring-offset-width: 2px;
}
.focus-visible\:border-ring:focus-visible {
  border-color: hsl(var(--ring));
}
.focus-visible\:outline-none:focus-visible {
  outline: 2px solid transparent;
  outline-offset: 2px;
}
.focus-visible\:outline-1:focus-visible {
  outline-width: 1px;
}
.focus-visible\:outline-primary:focus-visible {
  outline-color: hsl(var(--primary));
}
.focus-visible\:ring-1:focus-visible {
  --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
  --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);
  box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
}
.focus-visible\:ring-2:focus-visible {
  --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
  --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);
  box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
}
.focus-visible\:ring-4:focus-visible {
  --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
  --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);
  box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
}
.focus-visible\:ring-\[3px\]:focus-visible {
  --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
  --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);
  box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
}
.focus-visible\:ring-ring:focus-visible {
  --tw-ring-color: hsl(var(--ring));
}
.focus-visible\:ring-ring\/50:focus-visible {
  --tw-ring-color: hsl(var(--ring) / 0.5);
}
.focus-visible\:ring-offset-1:focus-visible {
  --tw-ring-offset-width: 1px;
}
.focus-visible\:ring-offset-2:focus-visible {
  --tw-ring-offset-width: 2px;
}
.disabled\:pointer-events-none:disabled {
  pointer-events: none;
}
.disabled\:cursor-not-allowed:disabled {
  cursor: not-allowed;
}
.disabled\:opacity-50:disabled {
  opacity: 0.5;
}
.peer:disabled ~ .peer-disabled\:cursor-not-allowed {
  cursor: not-allowed;
}
.peer:disabled ~ .peer-disabled\:opacity-70 {
  opacity: 0.7;
}
.has-\[\>svg\]\:grid-cols-\[calc\(var\(--spacing\)\*4\)_1fr\]:has(>svg) {
  grid-template-columns: calc(var(--spacing) * 4) 1fr;
}
.has-\[\>svg\]\:gap-x-3:has(>svg) {
  -moz-column-gap: 0.75rem;
       column-gap: 0.75rem;
}
.has-\[\:focus\]\:border-ring:has(:focus) {
  border-color: hsl(var(--ring));
}
.has-\[\:disabled\]\:opacity-50:has(:disabled) {
  opacity: 0.5;
}
.has-\[\:focus\]\:ring-\[3px\]:has(:focus) {
  --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
  --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);
  box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
}
.has-\[\:focus\]\:ring-ring\/50:has(:focus) {
  --tw-ring-color: hsl(var(--ring) / 0.5);
}
.aria-disabled\:opacity-50[aria-disabled="true"] {
  opacity: 0.5;
}
.aria-selected\:text-muted-foreground[aria-selected="true"] {
  color: hsl(var(--muted-foreground));
}
.data-\[disabled\=true\]\:pointer-events-none[data-disabled="true"] {
  pointer-events: none;
}
.data-\[disabled\]\:pointer-events-none[data-disabled] {
  pointer-events: none;
}
.data-\[active\=true\]\:z-10[data-active="true"] {
  z-index: 10;
}
.data-\[orientation\=horizontal\]\:h-1\.5[data-orientation="horizontal"] {
  height: 0.375rem;
}
.data-\[orientation\=horizontal\]\:h-full[data-orientation="horizontal"] {
  height: 100%;
}
.data-\[orientation\=horizontal\]\:h-px[data-orientation="horizontal"] {
  height: 1px;
}
.data-\[orientation\=vertical\]\:h-full[data-orientation="vertical"] {
  height: 100%;
}
.data-\[panel-group-direction\=vertical\]\:h-px[data-panel-group-direction="vertical"] {
  height: 1px;
}
.data-\[orientation\=vertical\]\:min-h-44[data-orientation="vertical"] {
  min-height: 11rem;
}
.data-\[orientation\=horizontal\]\:w-full[data-orientation="horizontal"] {
  width: 100%;
}
.data-\[orientation\=vertical\]\:w-1\.5[data-orientation="vertical"] {
  width: 0.375rem;
}
.data-\[orientation\=vertical\]\:w-auto[data-orientation="vertical"] {
  width: auto;
}
.data-\[orientation\=vertical\]\:w-full[data-orientation="vertical"] {
  width: 100%;
}
.data-\[orientation\=vertical\]\:w-px[data-orientation="vertical"] {
  width: 1px;
}
.data-\[panel-group-direction\=vertical\]\:w-full[data-panel-group-direction="vertical"] {
  width: 100%;
}
.data-\[side\=bottom\]\:translate-y-1[data-side="bottom"] {
  --tw-translate-y: 0.25rem;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.data-\[side\=left\]\:-translate-x-1[data-side="left"] {
  --tw-translate-x: -0.25rem;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.data-\[side\=right\]\:translate-x-1[data-side="right"] {
  --tw-translate-x: 0.25rem;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.data-\[side\=top\]\:-translate-y-1[data-side="top"] {
  --tw-translate-y: -0.25rem;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.data-\[state\=checked\]\:translate-x-\[calc\(100\%-2px\)\][data-state="checked"] {
  --tw-translate-x: calc(100% - 2px);
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.data-\[state\=unchecked\]\:translate-x-0[data-state="unchecked"] {
  --tw-translate-x: 0px;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
@keyframes accordion-up {

  from {
    height: var(--radix-accordion-content-height);
  }

  to {
    height: 0;
  }
}
.data-\[state\=closed\]\:animate-accordion-up[data-state="closed"] {
  animation: accordion-up 0.2s ease-out;
}
@keyframes accordion-down {

  from {
    height: 0;
  }

  to {
    height: var(--radix-accordion-content-height);
  }
}
.data-\[state\=open\]\:animate-accordion-down[data-state="open"] {
  animation: accordion-down 0.2s ease-out;
}
.data-\[orientation\=vertical\]\:flex-col[data-orientation="vertical"] {
  flex-direction: column;
}
.data-\[panel-group-direction\=vertical\]\:flex-col[data-panel-group-direction="vertical"] {
  flex-direction: column;
}
.data-\[range-end\=true\]\:rounded-md[data-range-end="true"] {
  border-radius: calc(var(--radius) - 2px);
}
.data-\[range-middle\=true\]\:rounded-none[data-range-middle="true"] {
  border-radius: 0px;
}
.data-\[range-start\=true\]\:rounded-md[data-range-start="true"] {
  border-radius: calc(var(--radius) - 2px);
}
.data-\[selected\=true\]\:rounded-none[data-selected="true"] {
  border-radius: 0px;
}
.data-\[range-end\=true\]\:rounded-r-md[data-range-end="true"] {
  border-top-right-radius: calc(var(--radius) - 2px);
  border-bottom-right-radius: calc(var(--radius) - 2px);
}
.data-\[range-start\=true\]\:rounded-l-md[data-range-start="true"] {
  border-top-left-radius: calc(var(--radius) - 2px);
  border-bottom-left-radius: calc(var(--radius) - 2px);
}
.data-\[active\=true\]\:border-ring[data-active="true"] {
  border-color: hsl(var(--ring));
}
.data-\[active\=true\]\:bg-accent\/50[data-active="true"] {
  background-color: hsl(var(--accent) / 0.5);
}
.data-\[range-end\=true\]\:bg-primary[data-range-end="true"] {
  background-color: hsl(var(--primary));
}
.data-\[range-middle\=true\]\:bg-accent[data-range-middle="true"] {
  background-color: hsl(var(--accent));
}
.data-\[range-start\=true\]\:bg-primary[data-range-start="true"] {
  background-color: hsl(var(--primary));
}
.data-\[selected-single\=true\]\:bg-primary[data-selected-single="true"] {
  background-color: hsl(var(--primary));
}
.data-\[selected\=true\]\:bg-accent[data-selected="true"] {
  background-color: hsl(var(--accent));
}
.data-\[state\=active\]\:bg-background[data-state="active"] {
  background-color: hsl(var(--background));
}
.data-\[state\=checked\]\:bg-primary[data-state="checked"] {
  background-color: hsl(var(--primary));
}
.data-\[state\=on\]\:bg-accent[data-state="on"] {
  background-color: hsl(var(--accent));
}
.data-\[state\=open\]\:bg-accent[data-state="open"] {
  background-color: hsl(var(--accent));
}
.data-\[state\=open\]\:bg-accent\/50[data-state="open"] {
  background-color: hsl(var(--accent) / 0.5);
}
.data-\[state\=open\]\:bg-secondary[data-state="open"] {
  background-color: hsl(var(--secondary));
}
.data-\[state\=selected\]\:bg-muted[data-state="selected"] {
  background-color: hsl(var(--muted));
}
.data-\[state\=unchecked\]\:bg-input[data-state="unchecked"] {
  background-color: hsl(var(--input));
}
.data-\[inset\]\:pl-8[data-inset] {
  padding-left: 2rem;
}
.data-\[active\=true\]\:text-accent-foreground[data-active="true"] {
  color: hsl(var(--accent-foreground));
}
.data-\[error\=true\]\:text-destructive[data-error="true"] {
  color: hsl(var(--destructive));
}
.data-\[placeholder\]\:text-muted-foreground[data-placeholder] {
  color: hsl(var(--muted-foreground));
}
.data-\[range-end\=true\]\:text-primary-foreground[data-range-end="true"] {
  color: hsl(var(--primary-foreground));
}
.data-\[range-middle\=true\]\:text-accent-foreground[data-range-middle="true"] {
  color: hsl(var(--accent-foreground));
}
.data-\[range-start\=true\]\:text-primary-foreground[data-range-start="true"] {
  color: hsl(var(--primary-foreground));
}
.data-\[selected-single\=true\]\:text-primary-foreground[data-selected-single="true"] {
  color: hsl(var(--primary-foreground));
}
.data-\[selected\=true\]\:text-accent-foreground[data-selected="true"] {
  color: hsl(var(--accent-foreground));
}
.data-\[state\=active\]\:text-foreground[data-state="active"] {
  color: hsl(var(--foreground));
}
.data-\[state\=checked\]\:text-primary-foreground[data-state="checked"] {
  color: hsl(var(--primary-foreground));
}
.data-\[state\=on\]\:text-accent-foreground[data-state="on"] {
  color: hsl(var(--accent-foreground));
}
.data-\[state\=open\]\:text-accent-foreground[data-state="open"] {
  color: hsl(var(--accent-foreground));
}
.data-\[state\=open\]\:text-muted-foreground[data-state="open"] {
  color: hsl(var(--muted-foreground));
}
.data-\[variant\=destructive\]\:text-destructive[data-variant="destructive"] {
  color: hsl(var(--destructive));
}
.data-\[disabled\=true\]\:opacity-50[data-disabled="true"] {
  opacity: 0.5;
}
.data-\[disabled\]\:opacity-50[data-disabled] {
  opacity: 0.5;
}
.data-\[state\=active\]\:shadow-sm[data-state="active"] {
  --tw-shadow: var(--shadow-sm);
  --tw-shadow-colored: var(--shadow-sm);
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}
.data-\[active\=true\]\:ring-\[3px\][data-active="true"] {
  --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
  --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);
  box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
}
.data-\[active\=true\]\:ring-ring\/50[data-active="true"] {
  --tw-ring-color: hsl(var(--ring) / 0.5);
}
.data-\[state\=closed\]\:duration-300[data-state="closed"] {
  transition-duration: 300ms;
}
.data-\[state\=open\]\:duration-500[data-state="open"] {
  transition-duration: 500ms;
}
.data-\[motion\^\=from-\]\:animate-in[data-motion^="from-"] {
  animation-name: enter;
  animation-duration: 150ms;
  --tw-enter-opacity: initial;
  --tw-enter-scale: initial;
  --tw-enter-rotate: initial;
  --tw-enter-translate-x: initial;
  --tw-enter-translate-y: initial;
}
.data-\[state\=open\]\:animate-in[data-state="open"] {
  animation-name: enter;
  animation-duration: 150ms;
  --tw-enter-opacity: initial;
  --tw-enter-scale: initial;
  --tw-enter-rotate: initial;
  --tw-enter-translate-x: initial;
  --tw-enter-translate-y: initial;
}
.data-\[state\=visible\]\:animate-in[data-state="visible"] {
  animation-name: enter;
  animation-duration: 150ms;
  --tw-enter-opacity: initial;
  --tw-enter-scale: initial;
  --tw-enter-rotate: initial;
  --tw-enter-translate-x: initial;
  --tw-enter-translate-y: initial;
}
.data-\[motion\^\=to-\]\:animate-out[data-motion^="to-"] {
  animation-name: exit;
  animation-duration: 150ms;
  --tw-exit-opacity: initial;
  --tw-exit-scale: initial;
  --tw-exit-rotate: initial;
  --tw-exit-translate-x: initial;
  --tw-exit-translate-y: initial;
}
.data-\[state\=closed\]\:animate-out[data-state="closed"] {
  animation-name: exit;
  animation-duration: 150ms;
  --tw-exit-opacity: initial;
  --tw-exit-scale: initial;
  --tw-exit-rotate: initial;
  --tw-exit-translate-x: initial;
  --tw-exit-translate-y: initial;
}
.data-\[state\=hidden\]\:animate-out[data-state="hidden"] {
  animation-name: exit;
  animation-duration: 150ms;
  --tw-exit-opacity: initial;
  --tw-exit-scale: initial;
  --tw-exit-rotate: initial;
  --tw-exit-translate-x: initial;
  --tw-exit-translate-y: initial;
}
.data-\[motion\^\=from-\]\:fade-in[data-motion^="from-"] {
  --tw-enter-opacity: 0;
}
.data-\[motion\^\=to-\]\:fade-out[data-motion^="to-"] {
  --tw-exit-opacity: 0;
}
.data-\[state\=closed\]\:fade-out-0[data-state="closed"] {
  --tw-exit-opacity: 0;
}
.data-\[state\=hidden\]\:fade-out[data-state="hidden"] {
  --tw-exit-opacity: 0;
}
.data-\[state\=open\]\:fade-in-0[data-state="open"] {
  --tw-enter-opacity: 0;
}
.data-\[state\=visible\]\:fade-in[data-state="visible"] {
  --tw-enter-opacity: 0;
}
.data-\[state\=closed\]\:zoom-out-95[data-state="closed"] {
  --tw-exit-scale: .95;
}
.data-\[state\=open\]\:zoom-in-90[data-state="open"] {
  --tw-enter-scale: .9;
}
.data-\[state\=open\]\:zoom-in-95[data-state="open"] {
  --tw-enter-scale: .95;
}
.data-\[motion\=from-end\]\:slide-in-from-right-52[data-motion="from-end"] {
  --tw-enter-translate-x: 13rem;
}
.data-\[motion\=from-start\]\:slide-in-from-left-52[data-motion="from-start"] {
  --tw-enter-translate-x: -13rem;
}
.data-\[motion\=to-end\]\:slide-out-to-right-52[data-motion="to-end"] {
  --tw-exit-translate-x: 13rem;
}
.data-\[motion\=to-start\]\:slide-out-to-left-52[data-motion="to-start"] {
  --tw-exit-translate-x: -13rem;
}
.data-\[side\=bottom\]\:slide-in-from-top-2[data-side="bottom"] {
  --tw-enter-translate-y: -0.5rem;
}
.data-\[side\=left\]\:slide-in-from-right-2[data-side="left"] {
  --tw-enter-translate-x: 0.5rem;
}
.data-\[side\=right\]\:slide-in-from-left-2[data-side="right"] {
  --tw-enter-translate-x: -0.5rem;
}
.data-\[side\=top\]\:slide-in-from-bottom-2[data-side="top"] {
  --tw-enter-translate-y: 0.5rem;
}
.data-\[state\=closed\]\:slide-out-to-bottom[data-state="closed"] {
  --tw-exit-translate-y: 100%;
}
.data-\[state\=closed\]\:slide-out-to-left[data-state="closed"] {
  --tw-exit-translate-x: -100%;
}
.data-\[state\=closed\]\:slide-out-to-left-1\/2[data-state="closed"] {
  --tw-exit-translate-x: -50%;
}
.data-\[state\=closed\]\:slide-out-to-right[data-state="closed"] {
  --tw-exit-translate-x: 100%;
}
.data-\[state\=closed\]\:slide-out-to-top[data-state="closed"] {
  --tw-exit-translate-y: -100%;
}
.data-\[state\=closed\]\:slide-out-to-top-\[48\%\][data-state="closed"] {
  --tw-exit-translate-y: -48%;
}
.data-\[state\=open\]\:slide-in-from-bottom[data-state="open"] {
  --tw-enter-translate-y: 100%;
}
.data-\[state\=open\]\:slide-in-from-left[data-state="open"] {
  --tw-enter-translate-x: -100%;
}
.data-\[state\=open\]\:slide-in-from-left-1\/2[data-state="open"] {
  --tw-enter-translate-x: -50%;
}
.data-\[state\=open\]\:slide-in-from-right[data-state="open"] {
  --tw-enter-translate-x: 100%;
}
.data-\[state\=open\]\:slide-in-from-top[data-state="open"] {
  --tw-enter-translate-y: -100%;
}
.data-\[state\=open\]\:slide-in-from-top-\[48\%\][data-state="open"] {
  --tw-enter-translate-y: -48%;
}
.data-\[state\=closed\]\:duration-300[data-state="closed"] {
  animation-duration: 300ms;
}
.data-\[state\=open\]\:duration-500[data-state="open"] {
  animation-duration: 500ms;
}
.\*\:data-\[slot\=alert-description\]\:text-destructive\/90[data-slot="alert-description"] > * {
  color: hsl(var(--destructive) / 0.9);
}
.data-\[panel-group-direction\=vertical\]\:after\:left-0[data-panel-group-direction="vertical"]::after {
  content: var(--tw-content);
  left: 0px;
}
.data-\[panel-group-direction\=vertical\]\:after\:h-1[data-panel-group-direction="vertical"]::after {
  content: var(--tw-content);
  height: 0.25rem;
}
.data-\[panel-group-direction\=vertical\]\:after\:w-full[data-panel-group-direction="vertical"]::after {
  content: var(--tw-content);
  width: 100%;
}
.data-\[panel-group-direction\=vertical\]\:after\:-translate-y-1\/2[data-panel-group-direction="vertical"]::after {
  content: var(--tw-content);
  --tw-translate-y: -50%;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.data-\[panel-group-direction\=vertical\]\:after\:translate-x-0[data-panel-group-direction="vertical"]::after {
  content: var(--tw-content);
  --tw-translate-x: 0px;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.data-\[active\=true\]\:hover\:bg-accent:hover[data-active="true"] {
  background-color: hsl(var(--accent));
}
.data-\[state\=open\]\:hover\:bg-accent:hover[data-state="open"] {
  background-color: hsl(var(--accent));
}
.data-\[active\=true\]\:focus\:bg-accent:focus[data-active="true"] {
  background-color: hsl(var(--accent));
}
.data-\[state\=open\]\:focus\:bg-accent:focus[data-state="open"] {
  background-color: hsl(var(--accent));
}
.data-\[variant\=destructive\]\:focus\:bg-destructive\/10:focus[data-variant="destructive"] {
  background-color: hsl(var(--destructive) / 0.1);
}
.data-\[variant\=destructive\]\:focus\:text-destructive:focus[data-variant="destructive"] {
  color: hsl(var(--destructive));
}
.group\/day[data-focused="true"] .group-data-\[focused\=true\]\/day\:relative {
  position: relative;
}
.group\/navigation-menu[data-viewport="false"] .group-data-\[viewport\=false\]\/navigation-menu\:top-full {
  top: 100%;
}
.group\/day[data-focused="true"] .group-data-\[focused\=true\]\/day\:z-10 {
  z-index: 10;
}
.group\/navigation-menu[data-viewport="false"] .group-data-\[viewport\=false\]\/navigation-menu\:mt-1\.5 {
  margin-top: 0.375rem;
}
.group[data-state="open"] .group-data-\[state\=open\]\:rotate-180 {
  --tw-rotate: 180deg;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.group\/navigation-menu[data-viewport="false"] .group-data-\[viewport\=false\]\/navigation-menu\:overflow-hidden {
  overflow: hidden;
}
.group\/navigation-menu[data-viewport="false"] .group-data-\[viewport\=false\]\/navigation-menu\:rounded-md {
  border-radius: calc(var(--radius) - 2px);
}
.group\/navigation-menu[data-viewport="false"] .group-data-\[viewport\=false\]\/navigation-menu\:border {
  border-width: 1px;
}
.group\/day[data-focused="true"] .group-data-\[focused\=true\]\/day\:border-ring {
  border-color: hsl(var(--ring));
}
.group\/navigation-menu[data-viewport="false"] .group-data-\[viewport\=false\]\/navigation-menu\:bg-popover {
  background-color: hsl(var(--popover));
}
.group\/navigation-menu[data-viewport="false"] .group-data-\[viewport\=false\]\/navigation-menu\:text-popover-foreground {
  color: hsl(var(--popover-foreground));
}
.group\/navigation-menu[data-viewport="false"] .group-data-\[viewport\=false\]\/navigation-menu\:shadow {
  --tw-shadow: var(--shadow);
  --tw-shadow-colored: var(--shadow);
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}
.group\/day[data-focused="true"] .group-data-\[focused\=true\]\/day\:ring-\[3px\] {
  --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
  --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);
  box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
}
.group\/day[data-focused="true"] .group-data-\[focused\=true\]\/day\:ring-ring\/50 {
  --tw-ring-color: hsl(var(--ring) / 0.5);
}
.group\/navigation-menu[data-viewport="false"] .group-data-\[viewport\=false\]\/navigation-menu\:duration-200 {
  transition-duration: 200ms;
  animation-duration: 200ms;
}
.group\/navigation-menu[data-viewport="false"] .group-data-\[viewport\=false\]\/navigation-menu\:data-\[state\=open\]\:animate-in[data-state="open"] {
  animation-name: enter;
  animation-duration: 150ms;
  --tw-enter-opacity: initial;
  --tw-enter-scale: initial;
  --tw-enter-rotate: initial;
  --tw-enter-translate-x: initial;
  --tw-enter-translate-y: initial;
}
.group\/navigation-menu[data-viewport="false"] .group-data-\[viewport\=false\]\/navigation-menu\:data-\[state\=closed\]\:animate-out[data-state="closed"] {
  animation-name: exit;
  animation-duration: 150ms;
  --tw-exit-opacity: initial;
  --tw-exit-scale: initial;
  --tw-exit-rotate: initial;
  --tw-exit-translate-x: initial;
  --tw-exit-translate-y: initial;
}
.group\/navigation-menu[data-viewport="false"] .group-data-\[viewport\=false\]\/navigation-menu\:data-\[state\=closed\]\:fade-out-0[data-state="closed"] {
  --tw-exit-opacity: 0;
}
.group\/navigation-menu[data-viewport="false"] .group-data-\[viewport\=false\]\/navigation-menu\:data-\[state\=open\]\:fade-in-0[data-state="open"] {
  --tw-enter-opacity: 0;
}
.group\/navigation-menu[data-viewport="false"] .group-data-\[viewport\=false\]\/navigation-menu\:data-\[state\=closed\]\:zoom-out-95[data-state="closed"] {
  --tw-exit-scale: .95;
}
.group\/navigation-menu[data-viewport="false"] .group-data-\[viewport\=false\]\/navigation-menu\:data-\[state\=open\]\:zoom-in-95[data-state="open"] {
  --tw-enter-scale: .95;
}
.dark\:bg-input\/30:is(.dark *) {
  background-color: hsl(var(--input) / 0.3);
}
.dark\:hover\:text-accent-foreground:hover:is(.dark *) {
  color: hsl(var(--accent-foreground));
}
.dark\:data-\[state\=checked\]\:bg-primary-foreground[data-state="checked"]:is(.dark *) {
  background-color: hsl(var(--primary-foreground));
}
.dark\:data-\[state\=unchecked\]\:bg-foreground[data-state="unchecked"]:is(.dark *) {
  background-color: hsl(var(--foreground));
}
.dark\:data-\[state\=unchecked\]\:bg-input\/80[data-state="unchecked"]:is(.dark *) {
  background-color: hsl(var(--input) / 0.8);
}
.dark\:data-\[variant\=destructive\]\:focus\:bg-destructive\/20:focus[data-variant="destructive"]:is(.dark *) {
  background-color: hsl(var(--destructive) / 0.2);
}
@media (min-width: 640px) {

  .sm\:max-w-lg {
    max-width: 32rem;
  }

  .sm\:max-w-sm {
    max-width: 24rem;
  }

  .sm\:flex-row {
    flex-direction: row;
  }

  .sm\:justify-end {
    justify-content: flex-end;
  }

  .sm\:gap-2\.5 {
    gap: 0.625rem;
  }

  .sm\:space-x-2 > :not([hidden]) ~ :not([hidden]) {
    --tw-space-x-reverse: 0;
    margin-right: calc(0.5rem * var(--tw-space-x-reverse));
    margin-left: calc(0.5rem * calc(1 - var(--tw-space-x-reverse)));
  }

  .sm\:rounded-lg {
    border-radius: var(--radius);
  }

  .sm\:text-left {
    text-align: left;
  }
}
@media (min-width: 768px) {

  .md\:absolute {
    position: absolute;
  }

  .md\:w-\[var\(--radix-navigation-menu-viewport-width\)\] {
    width: var(--radix-navigation-menu-viewport-width);
  }

  .md\:w-auto {
    width: auto;
  }

  .md\:flex-row {
    flex-direction: row;
  }

  .md\:text-sm {
    font-size: 0.875rem;
    line-height: 1.25rem;
  }
}
.\[\&\:first-child\[data-selected\=true\]_button\]\:rounded-l-md:first-child[data-selected=true] button {
  border-top-left-radius: calc(var(--radius) - 2px);
  border-bottom-left-radius: calc(var(--radius) - 2px);
}
.\[\&\:has\(\[role\=checkbox\]\)\]\:pr-0:has([role=checkbox]) {
  padding-right: 0px;
}
.\[\&\:last-child\[data-selected\=true\]_button\]\:rounded-r-md:last-child[data-selected=true] button {
  border-top-right-radius: calc(var(--radius) - 2px);
  border-bottom-right-radius: calc(var(--radius) - 2px);
}
.\[\&\:nth-child\(2\)\[data-selected\=true\]_button\]\:rounded-l-md:nth-child(2)[data-selected=true] button {
  border-top-left-radius: calc(var(--radius) - 2px);
  border-bottom-left-radius: calc(var(--radius) - 2px);
}
.\[\&\>span\]\:line-clamp-1>span {
  overflow: hidden;
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 1;
}
.\[\&\>span\]\:text-xs>span {
  font-size: 0.75rem;
  line-height: 1rem;
}
.\[\&\>span\]\:opacity-70>span {
  opacity: 0.7;
}
.\[\&\>svg\]\:size-3\.5>svg {
  width: 0.875rem;
  height: 0.875rem;
}
.\[\&\>svg\]\:size-4>svg {
  width: 1rem;
  height: 1rem;
}
.\[\&\>svg\]\:h-3\.5>svg {
  height: 0.875rem;
}
.\[\&\>svg\]\:w-3\.5>svg {
  width: 0.875rem;
}
.\[\&\>svg\]\:translate-y-0\.5>svg {
  --tw-translate-y: 0.125rem;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.\[\&\>svg\]\:text-current>svg {
  color: currentColor;
}
.\[\&\>svg\]\:text-muted-foreground>svg {
  color: hsl(var(--muted-foreground));
}
.\[\&\>tr\]\:last\:border-b-0:last-child>tr {
  border-bottom-width: 0px;
}
.\[\&\[data-panel-group-direction\=vertical\]\>div\]\:rotate-90[data-panel-group-direction=vertical]>div {
  --tw-rotate: 90deg;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.\[\&\[data-state\=open\]\>svg\]\:rotate-180[data-state=open]>svg {
  --tw-rotate: 180deg;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.\[\&_\[cmdk-group-heading\]\]\:px-2 [cmdk-group-heading] {
  padding-left: 0.5rem;
  padding-right: 0.5rem;
}
.\[\&_\[cmdk-group-heading\]\]\:py-1\.5 [cmdk-group-heading] {
  padding-top: 0.375rem;
  padding-bottom: 0.375rem;
}
.\[\&_\[cmdk-group-heading\]\]\:text-xs [cmdk-group-heading] {
  font-size: 0.75rem;
  line-height: 1rem;
}
.\[\&_\[cmdk-group-heading\]\]\:font-medium [cmdk-group-heading] {
  font-weight: 500;
}
.\[\&_\[cmdk-group-heading\]\]\:text-muted-foreground [cmdk-group-heading] {
  color: hsl(var(--muted-foreground));
}
.\[\&_\[cmdk-group\]\:not\(\[hidden\]\)_\~\[cmdk-group\]\]\:pt-0 [cmdk-group]:not([hidden]) ~[cmdk-group] {
  padding-top: 0px;
}
.\[\&_\[cmdk-group\]\]\:px-2 [cmdk-group] {
  padding-left: 0.5rem;
  padding-right: 0.5rem;
}
.\[\&_\[cmdk-input-wrapper\]_svg\]\:h-5 [cmdk-input-wrapper] svg {
  height: 1.25rem;
}
.\[\&_\[cmdk-input-wrapper\]_svg\]\:w-5 [cmdk-input-wrapper] svg {
  width: 1.25rem;
}
.\[\&_\[cmdk-input\]\]\:h-12 [cmdk-input] {
  height: 3rem;
}
.\[\&_\[cmdk-item\]\]\:px-2 [cmdk-item] {
  padding-left: 0.5rem;
  padding-right: 0.5rem;
}
.\[\&_\[cmdk-item\]\]\:py-3 [cmdk-item] {
  padding-top: 0.75rem;
  padding-bottom: 0.75rem;
}
.\[\&_\[cmdk-item\]_svg\]\:h-5 [cmdk-item] svg {
  height: 1.25rem;
}
.\[\&_\[cmdk-item\]_svg\]\:w-5 [cmdk-item] svg {
  width: 1.25rem;
}
.\[\&_p\]\:leading-relaxed p {
  line-height: 1.625;
}
.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4 svg:not([class*='size-']) {
  width: 1rem;
  height: 1rem;
}
.\[\&_svg\:not\(\[class\*\=\'text-\'\]\)\]\:text-muted-foreground svg:not([class*='text-']) {
  color: hsl(var(--muted-foreground));
}
.\[\&_svg\]\:pointer-events-none svg {
  pointer-events: none;
}
.\[\&_svg\]\:size-4 svg {
  width: 1rem;
  height: 1rem;
}
.\[\&_svg\]\:shrink-0 svg {
  flex-shrink: 0;
}
.\[\&_tr\:last-child\]\:border-0 tr:last-child {
  border-width: 0px;
}
.\[\&_tr\]\:border-b tr {
  border-bottom-width: 1px;
}
[data-slot=card-content] .\[\[data-slot\=card-content\]_\&\]\:bg-transparent {
  background-color: transparent;
}
[data-slot=popover-content] .\[\[data-slot\=popover-content\]_\&\]\:bg-transparent {
  background-color: transparent;
}
