.react-grid-layout{position:relative;transition:height .2s ease}.react-grid-item{transition:all .2s ease;transition-property:left,top,width,height}.react-grid-item img{pointer-events:none;-webkit-user-select:none;user-select:none}.react-grid-item.cssTransforms{transition-property:transform,width,height}.react-grid-item.resizing{transition:none;z-index:1;will-change:width,height}.react-grid-item.react-draggable-dragging{transition:none;z-index:3;will-change:transform}.react-grid-item.dropping{visibility:hidden}.react-grid-item.react-grid-placeholder{background:red;opacity:.2;transition-duration:.1s;z-index:2;-webkit-user-select:none;user-select:none}.react-grid-item.react-grid-placeholder.placeholder-resizing{transition:none}.react-grid-item>.react-resizable-handle{position:absolute;width:20px;height:20px;opacity:0}.react-grid-item:hover>.react-resizable-handle{opacity:1}.react-grid-item>.react-resizable-handle:after{content:"";position:absolute;right:3px;bottom:3px;width:5px;height:5px;border-right:2px solid rgba(0,0,0,.4);border-bottom:2px solid rgba(0,0,0,.4)}.react-resizable-hide>.react-resizable-handle{display:none}.react-grid-item>.react-resizable-handle.react-resizable-handle-sw{bottom:0;left:0;cursor:sw-resize;transform:rotate(90deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-se{bottom:0;right:0;cursor:se-resize}.react-grid-item>.react-resizable-handle.react-resizable-handle-nw{top:0;left:0;cursor:nw-resize;transform:rotate(180deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-ne{top:0;right:0;cursor:ne-resize;transform:rotate(270deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-w,.react-grid-item>.react-resizable-handle.react-resizable-handle-e{top:50%;margin-top:-10px;cursor:ew-resize}.react-grid-item>.react-resizable-handle.react-resizable-handle-w{left:0;transform:rotate(135deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-e{right:0;transform:rotate(315deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-n,.react-grid-item>.react-resizable-handle.react-resizable-handle-s{left:50%;margin-left:-10px;cursor:ns-resize}.react-grid-item>.react-resizable-handle.react-resizable-handle-n{top:0;transform:rotate(225deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-s{bottom:0;transform:rotate(45deg)}:root,[data-accent=cyan]{--accent-50: #ecfeff;--accent-100: #cffafe;--accent-200: #a5f3fc;--accent-300: #67e8f9;--accent-400: #22d3ee;--accent-500: #06b6d4;--accent-600: #0891b2;--accent-700: #0e7490;--accent-bg: rgba(6, 182, 212, .1);--accent-glow: rgba(6, 182, 212, .12);--accent-border: rgba(6, 182, 212, .3);--accent-rgb: 6, 182, 212}[data-accent=teal]{--accent-50: #f0fdfa;--accent-100: #ccfbf1;--accent-200: #99f6e4;--accent-300: #5eead4;--accent-400: #2dd4bf;--accent-500: #14b8a6;--accent-600: #0d9488;--accent-700: #0f766e;--accent-bg: rgba(20, 184, 166, .1);--accent-glow: rgba(45, 212, 191, .12);--accent-border: rgba(45, 212, 191, .3);--accent-rgb: 45, 212, 191}.accent-text{color:var(--accent-500)}.accent-text-muted{color:var(--accent-400)}.accent-bg{background-color:var(--accent-bg)}.accent-border{border-color:var(--accent-border)}.accent-glow{box-shadow:0 0 40px var(--accent-glow)}.accent-ring{box-shadow:0 0 0 2px var(--accent-border)}.accent-icon-glow{filter:drop-shadow(0 0 6px rgba(var(--accent-rgb),.5))}.accent-icon-glow-strong{filter:drop-shadow(0 0 10px rgba(var(--accent-rgb),.6))}*{box-sizing:border-box;margin:0;padding:0}:root{--bg-primary: #ffffff;--bg-secondary: #f5f5f7;--bg-tertiary: #e5e5ea;--bg-sidebar: #ffffff;--bg-card: #ffffff;--bg-card-alt: #f9fafb;--bg-card-hover: #f5f5f7;--bg-modal: rgba(255, 255, 255, .95);--bg-input: #f5f5f7;--bg-interactive: #f5f5f7;--bg-interactive-strong: #e5e7eb;--text-primary: #1d1d1f;--text-secondary: #515154;--text-tertiary: #86868b;--text-muted: #9ca3af;--text-accent: #0ea5e9;--border-color: #d2d2d7;--border-default: #e5e5ea;--border-subtle: #f0f0f0;--border-strong: #d1d5db;--border-divider: #e5e7eb;--card-bg: #ffffff;--card-border: #e5e5ea;--hover-bg: #f5f5f7;--shadow: rgba(0, 0, 0, .1);--shadow-card: rgba(0, 0, 0, .08);--shadow-card-sm: rgba(0, 0, 0, .05);--card-glow: rgba(14, 165, 233, .06);--accent-glow: rgba(14, 165, 233, .15);--accent-glow-strong: rgba(14, 165, 233, .25)}.dark{--bg-primary: #0a1120;--bg-secondary: #0f1726;--bg-tertiary: #151d2e;--bg-sidebar: #0c1120;--bg-card: #151d2e;--bg-card-alt: #111827;--bg-card-hover: rgba(255, 255, 255, .04);--bg-modal: rgba(12, 17, 32, .95);--bg-input: rgba(255, 255, 255, .06);--bg-interactive: rgba(255, 255, 255, .06);--bg-interactive-strong: rgba(255, 255, 255, .1);--text-primary: #f1f5f9;--text-secondary: #94a3b8;--text-tertiary: #64748b;--text-muted: #475569;--text-accent: #38bdf8;--border-color: rgba(255, 255, 255, .1);--border-default: rgba(255, 255, 255, .08);--border-subtle: rgba(255, 255, 255, .06);--border-strong: rgba(255, 255, 255, .12);--border-divider: rgba(255, 255, 255, .06);--card-bg: #151d2e;--card-border: rgba(255, 255, 255, .08);--hover-bg: rgba(255, 255, 255, .06);--shadow: rgba(0, 0, 0, .5);--shadow-card: rgba(0, 0, 0, .3);--shadow-card-sm: rgba(0, 0, 0, .2);--card-glow: rgba(14, 165, 233, .04);--accent-glow: rgba(14, 165, 233, .1);--accent-glow-strong: rgba(14, 165, 233, .18)}.dark .t-glow-top{--t-glow-color: rgba(6,182,212,.45);--t-glow-spread: rgba(6,182,212,.06)}.dark .t-glow-teal{--t-glow-color: rgba(45,212,191,.45);--t-glow-spread: rgba(45,212,191,.06)}.dark .t-glow-top:before,.dark .t-glow-teal:before{content:"";position:absolute;top:-1px;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent 5%,var(--t-glow-color) 50%,transparent 95%);border-radius:inherit;z-index:20;pointer-events:none}.dark .t-glow-top:after,.dark .t-glow-teal:after{content:"";position:absolute;top:0;left:10%;right:10%;height:32px;background:radial-gradient(ellipse at top,var(--t-glow-spread),transparent 80%);border-radius:inherit;z-index:10;pointer-events:none}body{font-family:Pretendard Variable,Pretendard,-apple-system,BlinkMacSystemFont,system-ui,Segoe UI,Apple SD Gothic Neo,Noto Sans KR,Malgun Gothic,sans-serif;background-color:var(--bg-primary);color:var(--text-primary);overflow:hidden;transition:background-color .3s ease,color .3s ease;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}*::-webkit-scrollbar{width:8px;height:8px}*::-webkit-scrollbar-track{background:transparent}*::-webkit-scrollbar-thumb{background:#00000026;border-radius:4px}*::-webkit-scrollbar-thumb:hover{background:#00000040}.dark *::-webkit-scrollbar-thumb{background:#ffffff1a}.dark *::-webkit-scrollbar-thumb:hover{background:#fff3}.custom-scrollbar::-webkit-scrollbar{width:6px;height:6px}.custom-scrollbar::-webkit-scrollbar-track{background:transparent}.custom-scrollbar::-webkit-scrollbar-thumb{background:#00000026;border-radius:3px}.custom-scrollbar::-webkit-scrollbar-thumb:hover{background:#00000040}.dark .custom-scrollbar::-webkit-scrollbar-thumb{background:#ffffff1a}.dark .custom-scrollbar::-webkit-scrollbar-thumb:hover{background:#fff3}.sidebar-scrollbar{overflow-y:auto}.sidebar-scrollbar::-webkit-scrollbar{width:3px}.sidebar-scrollbar::-webkit-scrollbar-track{background:transparent}.sidebar-scrollbar::-webkit-scrollbar-thumb{background:#0000000f;border-radius:3px}.sidebar-scrollbar::-webkit-scrollbar-thumb:hover{background:#00000024}.dark .sidebar-scrollbar::-webkit-scrollbar-thumb{background:#ffffff0d}.dark .sidebar-scrollbar::-webkit-scrollbar-thumb:hover{background:#ffffff1f}.sidebar-scrollbar{scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.06) transparent}.dark .sidebar-scrollbar{scrollbar-color:rgba(255,255,255,.05) transparent}.num-font{font-family:Pretendard Variable,Pretendard,sans-serif;font-variant-numeric:tabular-nums;font-feature-settings:"tnum"}.shadow-card{box-shadow:0 0 0 1px #00000008,0 1px 3px #0000000a,0 2px 8px #00000008}.dark .shadow-card{box-shadow:0 0 0 1px #ffffff0a}.shadow-card-lg{box-shadow:0 0 0 1px #00000008,0 2px 4px #0000000a,0 4px 16px #0000000a}.dark .shadow-card-lg{box-shadow:0 0 0 1px #ffffff0d,0 1px 4px #0003}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes slideInFromTop{0%{transform:translateY(-8px);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes cardEnter{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}@keyframes skeleton-pulse{0%,to{opacity:1}50%{opacity:.5}}@keyframes subtleGlow{0%,to{box-shadow:0 0 0 0 var(--card-glow)}50%{box-shadow:0 0 20px 2px var(--card-glow)}}@keyframes modalEnter{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes zoomIn{0%{transform:scale(.95);opacity:0}to{transform:scale(1);opacity:1}}@keyframes countUp{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@keyframes progressFill{0%{width:0%}}@keyframes pulseDot{0%,to{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(.85)}}@keyframes accentShimmer{0%{background-position:-200% 0}to{background-position:200% 0}}@keyframes toastIn{0%{opacity:0;transform:translate(16px)}to{opacity:1;transform:translate(0)}}@keyframes toastOut{0%{opacity:1;transform:translate(0)}to{opacity:0;transform:translate(16px)}}@keyframes toast-progress{0%{width:100%}to{width:0%}}.animate-in{animation:fadeIn .3s ease-out forwards}.fade-in{animation:fadeIn .2s ease-out forwards}.animate-fade-in{animation:fadeIn .25s ease-out forwards}.animate-fade-in-up{animation:fadeInUp .3s ease-out forwards}.animate-card-enter{animation:cardEnter .4s ease-out forwards}.animate-modal-enter{animation:modalEnter .2s cubic-bezier(.16,1,.3,1) forwards}.animate-subtle-glow{animation:subtleGlow 4s ease-in-out infinite}.animate-count-up{animation:countUp .5s ease-out forwards}.slide-in-from-top-1{animation:slideInFromTop .2s ease-out forwards}.slide-in-from-top-2{animation:slideInFromTop .3s ease-out forwards}.zoom-in-95{animation:zoomIn .2s ease-out forwards}.animate-toast-in{animation:toastIn .3s cubic-bezier(.16,1,.3,1) forwards}.animate-toast-out{animation:toastOut .2s ease-in forwards}.animate-pulse-dot{animation:pulseDot 2s ease-in-out infinite}@keyframes aqiBreathe{0%,to{box-shadow:0 0 0 0 var(--aqi-glow, transparent)}50%{box-shadow:0 0 12px 3px var(--aqi-glow, transparent)}}.animate-aqi-breathe{animation:aqiBreathe 3s ease-in-out infinite}.animate-accent-shimmer{background:linear-gradient(90deg,#38bdf8,#0ea5e9,#38bdf8,#0ea5e9);background-size:300% 100%;animation:accentShimmer 4s ease-in-out infinite}.animate-progress-fill{animation:progressFill 1s ease-out forwards}.animate-shimmer{background:linear-gradient(90deg,transparent 25%,rgba(14,165,233,.05) 50%,transparent 75%);background-size:200% 100%;animation:shimmer 1.5s infinite}.animate-shimmer-pulse{background:#e2e8f0b3;animation:skeleton-pulse 1.8s ease-in-out infinite}.dark .animate-shimmer-pulse{background:#1e2a4180;animation:skeleton-pulse 1.8s ease-in-out infinite}.stagger-1{animation-delay:50ms}.stagger-2{animation-delay:.1s}.stagger-3{animation-delay:.15s}.stagger-4{animation-delay:.2s}.stagger-5{animation-delay:.25s}.stagger-6{animation-delay:.3s}.stagger-7{animation-delay:.35s}.stagger-8{animation-delay:.4s}.stagger-9{animation-delay:.45s}.stagger-10{animation-delay:.5s}.stagger-11{animation-delay:.55s}.stagger-12{animation-delay:.6s}@keyframes mapPing{0%{r:4;opacity:.8}to{r:14;opacity:0}}@keyframes mapPingSmall{0%{r:3;opacity:.7}to{r:10;opacity:0}}.map-ping-anim{animation:mapPing 2s cubic-bezier(.25,.46,.45,.94) infinite;pointer-events:none}.map-ping-anim-small{animation:mapPingSmall 2s cubic-bezier(.25,.46,.45,.94) infinite;pointer-events:none}.markers-group,.drill-device-markers{pointer-events:none}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}@media print{body *{visibility:hidden!important}.print-content,.print-content *{visibility:visible!important}.print-content{position:absolute!important;left:0!important;top:0!important;width:210mm!important;padding:10mm!important;background:#fff!important;color:#111!important;font-size:11px!important}@page{size:A4;margin:10mm}}
