*,: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 / .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 / .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: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:var(--font-sans);font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--font-mono);font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}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}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.container{width:100%}@media(min-width:640px){.container{max-width:640px}}@media(min-width:768px){.container{max-width:768px}}@media(min-width:1024px){.container{max-width:1024px}}@media(min-width:1280px){.container{max-width:1280px}}@media(min-width:1536px){.container{max-width:1536px}}.\!visible{visibility:visible!important}.visible{visibility:visible}.invisible{visibility:hidden}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.left-\[14px\]{left:14px}.left-\[2px\]{left:2px}.right-3{right:.75rem}.top-0{top:0}.top-3{top:.75rem}.top-\[2px\]{top:2px}.z-10{z-index:10}.z-\[1001\]{z-index:1001}.-mx-1{margin-left:-.25rem;margin-right:-.25rem}.mx-1{margin-left:.25rem;margin-right:.25rem}.mx-1\.5{margin-left:.375rem;margin-right:.375rem}.mx-auto{margin-left:auto;margin-right:auto}.mb-0\.5{margin-bottom:.125rem}.mb-1{margin-bottom:.25rem}.mb-1\.5{margin-bottom:.375rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.ml-1{margin-left:.25rem}.ml-1\.5{margin-left:.375rem}.mr-0\.5{margin-right:.125rem}.mr-1{margin-right:.25rem}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-1\.5{margin-top:.375rem}.mt-2{margin-top:.5rem}.mt-20{margin-top:5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-6{margin-top:1.5rem}.block{display:block}.inline-block{display:inline-block}.flex{display:flex}.table{display:table}.\!grid{display:grid!important}.grid{display:grid}.hidden{display:none}.h-0{height:0px}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-12{height:3rem}.h-2{height:.5rem}.h-2\.5{height:.625rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-8{height:2rem}.h-96{height:24rem}.h-\[14px\]{height:14px}.h-\[18px\]{height:18px}.h-full{height:100%}.min-h-screen{min-height:100vh}.w-1\.5{width:.375rem}.w-10{width:2.5rem}.w-12{width:3rem}.w-16{width:4rem}.w-2{width:.5rem}.w-2\.5{width:.625rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-7{width:1.75rem}.w-8{width:2rem}.w-\[14px\]{width:14px}.w-\[250px\]{width:250px}.w-full{width:100%}.w-px{width:1px}.min-w-0{min-width:0px}.min-w-\[18px\]{min-width:18px}.max-w-\[120px\]{max-width:120px}.max-w-\[60px\]{max-width:60px}.max-w-lg{max-width:32rem}.flex-1{flex:1 1 0%}.flex-shrink-0{flex-shrink:0}.border-collapse{border-collapse:collapse}.rotate-180{--tw-rotate: 180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-110{--tw-scale-x: 1.1;--tw-scale-y: 1.1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(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)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}.cursor-pointer{cursor:pointer}.cursor-text{cursor:text}.resize-none{resize:none}.resize{resize:both}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-2\.5{gap:.625rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-0\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.125rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.125rem * var(--tw-space-y-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.25rem * var(--tw-space-y-reverse))}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-ds-lg{border-radius:var(--radius-lg)}.rounded-ds-md{border-radius:var(--radius-md)}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-sm{border-radius:.125rem}.border{border-width:1px}.border-2{border-width:2px}.border-b{border-bottom-width:1px}.border-l-2{border-left-width:2px}.border-t{border-top-width:1px}.border-t-2{border-top-width:2px}.border-dashed{border-style:dashed}.border-amber-100{--tw-border-opacity: 1;border-color:rgb(254 243 199 / var(--tw-border-opacity, 1))}.border-amber-200{--tw-border-opacity: 1;border-color:rgb(253 230 138 / var(--tw-border-opacity, 1))}.border-blue-100{--tw-border-opacity: 1;border-color:rgb(219 234 254 / var(--tw-border-opacity, 1))}.border-blue-200{--tw-border-opacity: 1;border-color:rgb(191 219 254 / var(--tw-border-opacity, 1))}.border-blue-400{--tw-border-opacity: 1;border-color:rgb(96 165 250 / var(--tw-border-opacity, 1))}.border-blue-800{--tw-border-opacity: 1;border-color:rgb(30 64 175 / var(--tw-border-opacity, 1))}.border-emerald-100{--tw-border-opacity: 1;border-color:rgb(209 250 229 / var(--tw-border-opacity, 1))}.border-emerald-200{--tw-border-opacity: 1;border-color:rgb(167 243 208 / var(--tw-border-opacity, 1))}.border-gray-200{--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity, 1))}.border-red-200{--tw-border-opacity: 1;border-color:rgb(254 202 202 / var(--tw-border-opacity, 1))}.border-red-500{--tw-border-opacity: 1;border-color:rgb(239 68 68 / var(--tw-border-opacity, 1))}.border-slate-100{--tw-border-opacity: 1;border-color:rgb(241 245 249 / var(--tw-border-opacity, 1))}.border-slate-200{--tw-border-opacity: 1;border-color:rgb(226 232 240 / var(--tw-border-opacity, 1))}.border-slate-300{--tw-border-opacity: 1;border-color:rgb(203 213 225 / var(--tw-border-opacity, 1))}.border-slate-800{--tw-border-opacity: 1;border-color:rgb(30 41 59 / var(--tw-border-opacity, 1))}.border-transparent{border-color:transparent}.border-white\/50{border-color:#ffffff80}.border-l-blue-500{--tw-border-opacity: 1;border-left-color:rgb(59 130 246 / var(--tw-border-opacity, 1))}.border-l-transparent{border-left-color:transparent}.border-t-blue-500{--tw-border-opacity: 1;border-top-color:rgb(59 130 246 / var(--tw-border-opacity, 1))}.bg-amber-50{--tw-bg-opacity: 1;background-color:rgb(255 251 235 / var(--tw-bg-opacity, 1))}.bg-amber-600{--tw-bg-opacity: 1;background-color:rgb(217 119 6 / var(--tw-bg-opacity, 1))}.bg-blue-100{--tw-bg-opacity: 1;background-color:rgb(219 234 254 / var(--tw-bg-opacity, 1))}.bg-blue-300{--tw-bg-opacity: 1;background-color:rgb(147 197 253 / var(--tw-bg-opacity, 1))}.bg-blue-50{--tw-bg-opacity: 1;background-color:rgb(239 246 255 / var(--tw-bg-opacity, 1))}.bg-blue-50\/50{background-color:#eff6ff80}.bg-blue-500{--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity, 1))}.bg-blue-600{--tw-bg-opacity: 1;background-color:rgb(37 99 235 / var(--tw-bg-opacity, 1))}.bg-ds-bg{background-color:var(--color-bg-primary)}.bg-emerald-50{--tw-bg-opacity: 1;background-color:rgb(236 253 245 / var(--tw-bg-opacity, 1))}.bg-emerald-600{--tw-bg-opacity: 1;background-color:rgb(5 150 105 / var(--tw-bg-opacity, 1))}.bg-navy-50{--tw-bg-opacity: 1;background-color:rgb(240 244 248 / var(--tw-bg-opacity, 1))}.bg-orange-50{--tw-bg-opacity: 1;background-color:rgb(255 247 237 / var(--tw-bg-opacity, 1))}.bg-red-100{--tw-bg-opacity: 1;background-color:rgb(254 226 226 / var(--tw-bg-opacity, 1))}.bg-red-200{--tw-bg-opacity: 1;background-color:rgb(254 202 202 / var(--tw-bg-opacity, 1))}.bg-red-400{--tw-bg-opacity: 1;background-color:rgb(248 113 113 / var(--tw-bg-opacity, 1))}.bg-red-50{--tw-bg-opacity: 1;background-color:rgb(254 242 242 / var(--tw-bg-opacity, 1))}.bg-red-600{--tw-bg-opacity: 1;background-color:rgb(220 38 38 / var(--tw-bg-opacity, 1))}.bg-slate-100{--tw-bg-opacity: 1;background-color:rgb(241 245 249 / var(--tw-bg-opacity, 1))}.bg-slate-200{--tw-bg-opacity: 1;background-color:rgb(226 232 240 / var(--tw-bg-opacity, 1))}.bg-slate-300{--tw-bg-opacity: 1;background-color:rgb(203 213 225 / var(--tw-bg-opacity, 1))}.bg-slate-50{--tw-bg-opacity: 1;background-color:rgb(248 250 252 / var(--tw-bg-opacity, 1))}.bg-slate-600{--tw-bg-opacity: 1;background-color:rgb(71 85 105 / var(--tw-bg-opacity, 1))}.bg-slate-800{--tw-bg-opacity: 1;background-color:rgb(30 41 59 / var(--tw-bg-opacity, 1))}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.bg-white\/90{background-color:#ffffffe6}.bg-yellow-50{--tw-bg-opacity: 1;background-color:rgb(254 252 232 / var(--tw-bg-opacity, 1))}.p-0\.5{padding:.125rem}.p-2{padding:.5rem}.p-2\.5{padding:.625rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.px-0\.5{padding-left:.125rem;padding-right:.125rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.py-0{padding-top:0;padding-bottom:0}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pb-0{padding-bottom:0}.pt-1{padding-top:.25rem}.pt-1\.5{padding-top:.375rem}.pt-2{padding-top:.5rem}.pt-2\.5{padding-top:.625rem}.pt-3{padding-top:.75rem}.pt-5{padding-top:1.25rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.font-mono{font-family:var(--font-mono)}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[8px\]{font-size:8px}.text-\[9px\]{font-size:9px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing: tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-none{line-height:1}.leading-tight{line-height:1.25}.tracking-wide{letter-spacing:.025em}.tracking-wider{letter-spacing:.05em}.text-amber-500{--tw-text-opacity: 1;color:rgb(245 158 11 / var(--tw-text-opacity, 1))}.text-amber-600{--tw-text-opacity: 1;color:rgb(217 119 6 / var(--tw-text-opacity, 1))}.text-amber-700{--tw-text-opacity: 1;color:rgb(180 83 9 / var(--tw-text-opacity, 1))}.text-amber-800{--tw-text-opacity: 1;color:rgb(146 64 14 / var(--tw-text-opacity, 1))}.text-blue-500{--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity, 1))}.text-blue-600{--tw-text-opacity: 1;color:rgb(37 99 235 / var(--tw-text-opacity, 1))}.text-blue-700{--tw-text-opacity: 1;color:rgb(29 78 216 / var(--tw-text-opacity, 1))}.text-blue-800{--tw-text-opacity: 1;color:rgb(30 64 175 / var(--tw-text-opacity, 1))}.text-emerald-500{--tw-text-opacity: 1;color:rgb(16 185 129 / var(--tw-text-opacity, 1))}.text-emerald-600{--tw-text-opacity: 1;color:rgb(5 150 105 / var(--tw-text-opacity, 1))}.text-emerald-700{--tw-text-opacity: 1;color:rgb(4 120 87 / var(--tw-text-opacity, 1))}.text-emerald-800{--tw-text-opacity: 1;color:rgb(6 95 70 / var(--tw-text-opacity, 1))}.text-gray-400{--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.text-gray-500{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.text-green-700{--tw-text-opacity: 1;color:rgb(21 128 61 / var(--tw-text-opacity, 1))}.text-navy-900{--tw-text-opacity: 1;color:rgb(16 42 67 / var(--tw-text-opacity, 1))}.text-orange-700{--tw-text-opacity: 1;color:rgb(194 65 12 / var(--tw-text-opacity, 1))}.text-red-500{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.text-red-600{--tw-text-opacity: 1;color:rgb(220 38 38 / var(--tw-text-opacity, 1))}.text-red-700{--tw-text-opacity: 1;color:rgb(185 28 28 / var(--tw-text-opacity, 1))}.text-red-900{--tw-text-opacity: 1;color:rgb(127 29 29 / var(--tw-text-opacity, 1))}.text-slate-300{--tw-text-opacity: 1;color:rgb(203 213 225 / var(--tw-text-opacity, 1))}.text-slate-400{--tw-text-opacity: 1;color:rgb(148 163 184 / var(--tw-text-opacity, 1))}.text-slate-500{--tw-text-opacity: 1;color:rgb(100 116 139 / var(--tw-text-opacity, 1))}.text-slate-600{--tw-text-opacity: 1;color:rgb(71 85 105 / var(--tw-text-opacity, 1))}.text-slate-700{--tw-text-opacity: 1;color:rgb(51 65 85 / var(--tw-text-opacity, 1))}.text-slate-800{--tw-text-opacity: 1;color:rgb(30 41 59 / var(--tw-text-opacity, 1))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.text-yellow-700{--tw-text-opacity: 1;color:rgb(161 98 7 / var(--tw-text-opacity, 1))}.underline{text-decoration-line:underline}.opacity-0{opacity:0}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.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-1{--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)}.ring-blue-100{--tw-ring-opacity: 1;--tw-ring-color: rgb(219 234 254 / var(--tw-ring-opacity, 1))}.blur{--tw-blur: blur(8px);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)}.drop-shadow{--tw-drop-shadow: drop-shadow(0 1px 2px rgb(0 0 0 / .1)) drop-shadow(0 1px 1px rgb(0 0 0 / .06));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)}.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-filter{-webkit-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);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(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}:root{--color-bg-primary: #f7f8fa;--color-bg-secondary: #ffffff;--color-bg-tertiary: #eef0f4;--color-bg-inset: #e8ebf0;--color-bg-inverse: #0f1623;--color-surface: #ffffff;--color-surface-hover: #f4f5f8;--color-surface-raised:#ffffff;--color-border: #dfe2e8;--color-border-subtle: #e9ecf1;--color-border-strong: #c5c9d2;--color-text-primary: #0f1623;--color-text-secondary: #4a5568;--color-text-tertiary: #8a94a6;--color-text-inverse: #f8f9fb;--color-text-link: #1a73e8;--color-accent: #0c7fd9;--color-accent-hover: #0969b8;--color-accent-subtle: #e8f2fc;--color-accent-muted: #b8d8f5;--color-success: #0d9f6e;--color-success-subtle: #ecfdf5;--color-warning: #c87a0a;--color-warning-subtle: #fefce8;--color-danger: #d03030;--color-danger-subtle: #fef2f2;--color-info: #0284c7;--color-info-subtle: #f0f9ff;--color-header-bg: #0f1623;--color-header-border: rgba(255,255,255,.06);--color-header-text: #e8ecf2;--color-header-text-secondary: #8a94a6;--color-sidebar-bg: #ffffff;--color-sidebar-border: #e2e6ec;--color-hover: #f0f2f6;--tl-panel-bg: rgba(240, 243, 248, .88);--tl-panel-border: rgba(0, 0, 0, .1);--tl-text: #0f1623;--tl-text-sub: #3a4558;--tl-text-muted: #6b7688;--tl-label-bg: rgba(235, 238, 244, .92);--tl-cell-border: rgba(0, 0, 0, .06);--tl-active-bg: rgba(12, 127, 217, .12);--tl-hover-bg: rgba(0, 0, 0, .03);--shadow-xs: 0 1px 2px rgba(15,22,35,.03);--shadow-sm: 0 1px 3px rgba(15,22,35,.04), 0 1px 2px rgba(15,22,35,.02);--shadow-md: 0 4px 8px -2px rgba(15,22,35,.06), 0 2px 4px -2px rgba(15,22,35,.03);--shadow-lg: 0 12px 24px -4px rgba(15,22,35,.08), 0 4px 8px -4px rgba(15,22,35,.03);--shadow-xl: 0 24px 48px -8px rgba(15,22,35,.1), 0 8px 16px -6px rgba(15,22,35,.04);--shadow-overlay: 0 16px 48px -8px rgba(15,22,35,.14), 0 4px 16px -2px rgba(15,22,35,.06);--shadow-ring-accent: 0 0 0 3px rgba(12,127,217,.16);--font-sans: "Inter", ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, sans-serif;--font-mono: "JetBrains Mono", "Fira Code", ui-monospace, SFMono-Regular, monospace;--space-0: 0px;--space-px: 1px;--space-0-5: 2px;--space-1: 4px;--space-1-5: 6px;--space-2: 8px;--space-2-5: 10px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-8: 32px;--space-10: 40px;--space-12: 48px;--space-16: 64px;--radius-xs: 4px;--radius-sm: 6px;--radius-md: 8px;--radius-lg: 12px;--radius-xl: 16px;--radius-2xl: 20px;--radius-full: 9999px;--ease-default: cubic-bezier(.4, 0, .2, 1);--ease-spring: cubic-bezier(.16, 1, .3, 1);--ease-out-expo: cubic-bezier(.19, 1, .22, 1);--duration-fast: .1s;--duration-base: .18s;--duration-slow: .28s;--color-purple: #8b5cf6;--color-purple-subtle: rgba(139, 92, 246, .08);--color-purple-muted: rgba(139, 92, 246, .18);--z-base: 0;--z-raised: 1;--z-dropdown: 10;--z-sticky: 20;--z-overlay: 30;--z-modal: 40;--z-toast: 50}[data-theme=dark]{--color-bg-primary: #0b0e17;--color-bg-secondary: #111520;--color-bg-tertiary: #181c28;--color-bg-inset: #0e1119;--color-bg-inverse: #f0f2f5;--color-surface: #141824;--color-surface-hover: #1a1f2e;--color-surface-raised:#1e2332;--color-border: #252a38;--color-border-subtle: #1e2230;--color-border-strong: #343a4d;--color-text-primary: #e8ecf2;--color-text-secondary: #9aa4b8;--color-text-tertiary: #728094;--color-text-inverse: #0f1623;--color-text-link: #4da3f0;--color-accent: #2d8ee6;--color-accent-hover: #5aacf5;--color-accent-subtle: rgba(45,142,230,.1);--color-accent-muted: rgba(45,142,230,.22);--color-success: #22c55e;--color-success-subtle: rgba(34, 197, 94, .08);--color-warning: #f59e0b;--color-warning-subtle: rgba(245, 158, 11, .08);--color-danger: #ef4444;--color-danger-subtle: rgba(239, 68, 68, .08);--color-info: #38bdf8;--color-info-subtle: rgba(56, 189, 248, .08);--color-header-bg: #080b12;--color-header-border: rgba(255,255,255,.05);--color-header-text: #d8dce6;--color-header-text-secondary: #6e7a90;--color-sidebar-bg: #111520;--color-sidebar-border: #1e2230;--color-hover: #1a1f2e;--tl-panel-bg: rgba(11, 14, 23, .9);--tl-panel-border: rgba(255, 255, 255, .07);--tl-text: #e0e4ec;--tl-text-sub: #a0a8b8;--tl-text-muted: #6b7688;--tl-label-bg: rgba(14, 17, 25, .94);--tl-cell-border: rgba(255, 255, 255, .04);--color-purple: #a78bfa;--color-purple-subtle: rgba(167, 139, 250, .1);--color-purple-muted: rgba(167, 139, 250, .2);--tl-active-bg: rgba(45, 142, 230, .14);--tl-hover-bg: rgba(255, 255, 255, .03);--shadow-xs: 0 1px 2px rgba(0,0,0,.2);--shadow-sm: 0 1px 3px rgba(0,0,0,.24), 0 1px 2px rgba(0,0,0,.14);--shadow-md: 0 4px 8px -2px rgba(0,0,0,.28), 0 2px 4px -2px rgba(0,0,0,.16);--shadow-lg: 0 12px 24px -4px rgba(0,0,0,.32), 0 4px 8px -4px rgba(0,0,0,.18);--shadow-xl: 0 24px 48px -8px rgba(0,0,0,.36), 0 8px 16px -6px rgba(0,0,0,.2);--shadow-overlay: 0 16px 48px -8px rgba(0,0,0,.44), 0 4px 16px -2px rgba(0,0,0,.24);--shadow-ring-accent: 0 0 0 3px rgba(45,142,230,.2)}body{background-color:var(--color-bg-primary);color:var(--color-text-primary);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;transition:background-color var(--duration-base) var(--ease-default),color var(--duration-base) var(--ease-default)}.theme-toggle{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border:1px solid rgba(255,255,255,.08);border-radius:var(--radius-sm);background:#ffffff0a;color:var(--color-header-text-secondary);cursor:pointer;transition:all var(--duration-fast) var(--ease-default)}.theme-toggle:hover{color:var(--color-header-text);background:#ffffff14;border-color:#ffffff1f}.theme-toggle:active{transform:scale(.92)}.theme-toggle svg{transition:transform var(--duration-base) var(--ease-spring)}.theme-toggle:hover svg{transform:rotate(15deg)}button,input,select,.transition-all{transition-property:color,background-color,border-color,box-shadow,opacity;transition-duration:var(--duration-base);transition-timing-function:var(--ease-default)}html{scroll-behavior:smooth}*{scrollbar-width:thin;scrollbar-color:var(--color-border-strong) transparent}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-thumb{background:var(--color-border-strong);border-radius:var(--radius-full)}::-webkit-scrollbar-thumb:hover{background:var(--color-text-tertiary)}::-moz-selection{background:var(--color-accent-subtle);color:var(--color-text-primary)}::selection{background:var(--color-accent-subtle);color:var(--color-text-primary)}:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}:focus:not(:focus-visible){outline:none}.leaflet-container{width:100%;height:100%}.leaflet-tile-container img{transition:opacity .15s linear}.leaflet-zoom-anim .leaflet-zoom-animated{transition:transform .15s cubic-bezier(0,0,.25,1)!important}.leaflet-marker-icon,.leaflet-marker-shadow{transition:transform .1s linear}.leaflet-marker-icon.leaflet-grab,.leaflet-dragging .leaflet-marker-icon{transition:none!important}.weather-canvas{transition:opacity .3s ease-out;will-change:opacity;image-rendering:auto}.weather-canvas--entering{opacity:1}.weather-canvas--leaving{opacity:0;pointer-events:none}.leaflet-zoom-anim .weather-canvas{transition:opacity .1s linear;opacity:.85}.custom-wp-icon{transition:transform .15s ease}.leaflet-popup-content-wrapper{border-radius:10px!important;box-shadow:var(--shadow-lg)!important}.leaflet-control{transition:opacity .2s ease}.leaflet-interactive.route-line-active{filter:drop-shadow(0 0 4px rgba(59,130,246,.45)) drop-shadow(0 0 8px rgba(59,130,246,.2))}.weather-panel{will-change:transform,opacity;backface-visibility:hidden;transform:translateZ(0)}@keyframes panel-slide-up{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.panel-enter{animation:panel-slide-up .28s var(--ease-spring) both}@keyframes content-fade{0%{opacity:0}to{opacity:1}}.content-fade-in{animation:content-fade .18s ease-out both}.timeline-scroll{scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch;scroll-behavior:smooth}.timeline-scroll::-webkit-scrollbar{height:3px}.timeline-scroll::-webkit-scrollbar-track{background:transparent}.timeline-scroll::-webkit-scrollbar-thumb{background:#2d8ee64d;border-radius:2px}.timeline-scroll::-webkit-scrollbar-thumb:hover{background:#2d8ee680}.timeline-col{scroll-snap-align:start;transition:background-color var(--duration-fast) var(--ease-default),box-shadow var(--duration-fast) var(--ease-default)}.timeline-col--active{box-shadow:inset 0 0 0 1.5px #2d8ee673}@keyframes cursor-pulse{0%,to{opacity:.9}50%{opacity:.5}}.timeline-cursor{position:absolute;top:0;bottom:0;width:2px;background:linear-gradient(180deg,#2d8ee6e6,#2d8ee633);border-radius:1px;z-index:3;pointer-events:none;transition:left var(--duration-fast) var(--ease-default);animation:cursor-pulse 2s ease-in-out infinite}.timeline-row{transition:background-color var(--duration-fast) var(--ease-default)}.timeline-row:hover{background-color:#ffffff06}.btn-press:active{transform:scale(.97);transition-duration:50ms}.toggle-btn{transition:background-color var(--duration-fast) var(--ease-default),border-color var(--duration-fast) var(--ease-default),color var(--duration-fast) var(--ease-default),transform 80ms var(--ease-default),box-shadow var(--duration-fast) var(--ease-default)}.toggle-btn:active{transform:scale(.96)}.toggle-btn:hover{box-shadow:0 0 0 2px #2d8ee61f}@keyframes badge-pop{0%{transform:scale(.85);opacity:0}to{transform:scale(1);opacity:1}}.badge-pop{animation:badge-pop .18s var(--ease-spring) both}@keyframes play-glow{0%,to{box-shadow:0 0 #ef444400}50%{box-shadow:0 0 8px 2px #ef444440}}.play-btn--active{animation:play-glow 1.8s ease-in-out infinite}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.skeleton{background:linear-gradient(90deg,#ffffff08 25%,#ffffff0f,#ffffff08 75%);background-size:200% 100%;animation:shimmer 1.5s ease-in-out infinite;border-radius:var(--radius-xs)}@keyframes pulse-warning{0%,to{opacity:1}50%{opacity:.5}}.session-timer{font-family:var(--font-mono, ui-monospace, monospace);font-size:11px;font-weight:500;font-variant-numeric:tabular-nums;letter-spacing:.02em;color:var(--color-header-text-secondary);padding:3px 8px;border-radius:var(--radius-xs);background:#ffffff0a;border:1px solid rgba(255,255,255,.06);transition:all var(--duration-base) var(--ease-default)}.session-timer--low{color:var(--color-danger);background:#ef44441a;border-color:#ef444433}.session-warning{animation:pulse-warning 1s ease-in-out infinite}@keyframes fade-in{0%{opacity:0;transform:translateY(3px)}to{opacity:1;transform:translateY(0)}}.animate-fade-in{animation:fade-in .18s ease-out}@keyframes weather-spin{to{transform:rotate(360deg)}}::-webkit-scrollbar{width:5px;height:5px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#64748b33;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#64748b59}[data-theme=dark] ::-webkit-scrollbar-thumb{background:#94a3b81f}[data-theme=dark] ::-webkit-scrollbar-thumb:hover{background:#94a3b838}.measure-label-tooltip,.measure-total-tooltip{background:transparent!important;border:none!important;box-shadow:none!important;padding:0!important;margin:0!important}.measure-label-tooltip:before,.measure-total-tooltip:before{display:none!important}input[type=range]{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent}input[type=range]::-webkit-slider-runnable-track{height:3px;background:#ffffff1f;border-radius:2px;-webkit-transition:background var(--duration-base) var(--ease-default);transition:background var(--duration-base) var(--ease-default)}input[type=range]:hover::-webkit-slider-runnable-track{background:#fff3}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:14px;height:14px;border-radius:50%;background:var(--color-accent);cursor:pointer;margin-top:-5.5px;box-shadow:0 1px 4px #00000040;-webkit-transition:transform 80ms var(--ease-default),box-shadow var(--duration-fast) var(--ease-default);transition:transform 80ms var(--ease-default),box-shadow var(--duration-fast) var(--ease-default)}input[type=range]::-webkit-slider-thumb:hover{transform:scale(1.15);box-shadow:0 0 0 4px #2d8ee626,0 1px 4px #00000040}input[type=range]:active::-webkit-slider-thumb{transform:scale(1.08);box-shadow:0 0 0 6px #2d8ee633,0 1px 4px #00000040}.bg-navy-900 input[type=range]::-webkit-slider-runnable-track,[style*="rgba(15"] input[type=range]::-webkit-slider-runnable-track{background:#ffffff1a}.app-header{display:flex;align-items:center;justify-content:space-between;height:48px;padding:0 var(--space-4) 0 var(--space-3);background:var(--color-header-bg);border-bottom:1px solid var(--color-header-border);position:sticky;top:0;z-index:var(--z-sticky);-moz-user-select:none;user-select:none;-webkit-user-select:none}.app-header a,.app-header button{-webkit-user-drag:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.app-header-left{display:flex;align-items:center;gap:var(--space-1)}.app-header-right{display:flex;align-items:center;gap:var(--space-2-5)}.app-logo{font-size:13px;font-weight:700;letter-spacing:.08em;color:#fff;text-decoration:none;padding:5px 10px;margin-right:var(--space-1);border-radius:var(--radius-sm);background:#2d8ee61f;border:1px solid rgba(45,142,230,.18);transition:all var(--duration-fast) var(--ease-default)}.app-logo:hover{background:#2d8ee62e;border-color:#2d8ee647}.app-nav{display:flex;align-items:center;gap:2px;margin-left:var(--space-2)}.app-nav-link{padding:6px 12px;border-radius:var(--radius-sm);font-size:13px;font-weight:450;color:var(--color-header-text-secondary);text-decoration:none;white-space:nowrap;-webkit-user-drag:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:all var(--duration-fast) var(--ease-default);position:relative}.app-nav-link:hover{color:var(--color-header-text);background:#ffffff0d}.app-nav-link--active{color:#fff;font-weight:550;background:#ffffff12}.app-nav-link--active:after{content:"";position:absolute;bottom:-1px;left:12px;right:12px;height:2px;border-radius:1px;background:var(--color-accent)}.app-user-name{font-size:12px;font-weight:500;color:var(--color-header-text-secondary);letter-spacing:.01em}.app-header-btn{padding:5px 12px;border:1px solid rgba(255,255,255,.08);border-radius:var(--radius-sm);background:#ffffff0a;font-size:12px;font-weight:500;color:var(--color-header-text-secondary);cursor:pointer;transition:all var(--duration-fast) var(--ease-default)}.app-header-btn:hover{color:var(--color-header-text);background:#ffffff14;border-color:#ffffff24}.page-shell{max-width:960px;margin:0 auto;padding:var(--space-8) var(--space-6)}.page-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-6)}.page-title{font-size:18px;font-weight:650;letter-spacing:-.01em;color:var(--color-text-primary)}.ds-card{border-radius:var(--radius-lg);border:1px solid var(--color-border-subtle);background:var(--color-surface);overflow:hidden;box-shadow:var(--shadow-xs)}.ds-card-body{padding:var(--space-5)}.ds-table{width:100%;font-size:13px;border-collapse:separate;border-spacing:0}.ds-table thead{border-bottom:1px solid var(--color-border-subtle)}.ds-table th{text-align:left;padding:10px 14px;font-size:11px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--color-text-tertiary);background:var(--color-bg-primary);border-bottom:1px solid var(--color-border-subtle)}.ds-table td{padding:12px 14px;color:var(--color-text-primary);border-bottom:1px solid var(--color-border-subtle);transition:background-color var(--duration-fast) var(--ease-default)}.ds-table tbody tr:last-child td{border-bottom:none}.ds-table tbody tr:hover td{background:var(--color-surface-hover)}.ds-input{height:36px;padding:0 var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);color:var(--color-text-primary);font-size:13px;outline:none;transition:all var(--duration-fast) var(--ease-default);width:100%}.ds-input:focus{border-color:var(--color-accent);box-shadow:var(--shadow-ring-accent)}.ds-input::-moz-placeholder{color:var(--color-text-tertiary);opacity:.8}.ds-input::placeholder{color:var(--color-text-tertiary);opacity:.8}.ds-select{height:36px;padding:0 var(--space-3);padding-right:var(--space-8);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);color:var(--color-text-primary);font-size:13px;outline:none;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg width='10' height='6' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%239CA3AF' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;transition:all var(--duration-fast) var(--ease-default)}.ds-select:focus{border-color:var(--color-accent);box-shadow:var(--shadow-ring-accent)}.ds-label{display:block;font-size:11px;font-weight:600;letter-spacing:.03em;text-transform:uppercase;color:var(--color-text-tertiary);margin-bottom:6px}.ds-btn{display:inline-flex;align-items:center;justify-content:center;gap:5px;padding:6px 14px;border-radius:var(--radius-sm);font-size:13px;font-weight:530;cursor:pointer;white-space:nowrap;border:none;background:transparent;color:var(--color-text-secondary);transition:all var(--duration-fast) var(--ease-default)}.ds-btn:hover{color:var(--color-text-primary);background:var(--color-hover)}.ds-btn:active{transform:scale(.97)}.ds-btn--primary{background:var(--color-accent);color:#fff;box-shadow:var(--shadow-xs),inset 0 1px #ffffff1a}.ds-btn--primary:hover{background:var(--color-accent-hover);color:#fff;box-shadow:var(--shadow-sm),inset 0 1px #ffffff1a}.ds-btn--secondary{background:var(--color-surface);color:var(--color-text-secondary);border:1px solid var(--color-border)}.ds-btn--secondary:hover{color:var(--color-text-primary);background:var(--color-surface-hover);border-color:var(--color-border-strong)}.ds-btn--success{color:var(--color-success)}.ds-btn--success:hover{background:var(--color-success-subtle)}.ds-btn--danger{color:var(--color-danger)}.ds-btn--danger:hover{background:var(--color-danger-subtle)}.ds-btn--warning{color:var(--color-warning)}.ds-btn--warning:hover{background:var(--color-warning-subtle)}.ds-btn--ghost{color:var(--color-text-tertiary)}.ds-btn--ghost:hover{color:var(--color-text-primary);background:var(--color-hover)}.ds-btn--sm{padding:4px 10px;font-size:12px}.ds-btn:disabled{opacity:1;cursor:not-allowed;pointer-events:none;background:var(--color-bg-tertiary);color:var(--color-text-tertiary);box-shadow:none;border-color:var(--color-border-subtle)}.ds-alert{padding:10px 14px;border-radius:var(--radius-md);font-size:13px;margin-bottom:var(--space-3);border:1px solid transparent}.ds-alert--error{background:var(--color-danger-subtle);color:var(--color-danger);border-color:#d030301f}.ds-alert--success{background:var(--color-success-subtle);color:var(--color-success);border-color:#0d9f6e1f}.ds-alert--info{background:var(--color-info-subtle);color:var(--color-info);border-color:#0284c71f}.ds-badge{display:inline-flex;align-items:center;padding:2px 8px;border-radius:var(--radius-full);font-size:11px;font-weight:550;letter-spacing:.01em}.ds-badge--active{color:var(--color-success);background:var(--color-success-subtle)}.ds-badge--inactive{color:var(--color-text-tertiary);background:var(--color-bg-tertiary)}.ds-badge--pending{color:var(--color-warning);background:var(--color-warning-subtle)}.ds-badge--admin{color:var(--color-accent);background:var(--color-accent-subtle)}.ds-badge--user{color:var(--color-text-tertiary);background:var(--color-bg-tertiary)}.ds-badge--accent{color:var(--color-accent);background:var(--color-accent-subtle)}.ds-badge--warning{color:var(--color-warning);background:var(--color-warning-subtle)}.ds-badge--success{color:var(--color-success);background:var(--color-success-subtle)}.page-centered{display:flex;align-items:center;justify-content:center;min-height:calc(100vh - 96px);padding:var(--space-5)}.page-centered-card{width:100%;max-width:400px;padding:var(--space-8);border-radius:var(--radius-xl);border:1px solid var(--color-border-subtle);background:var(--color-surface);box-shadow:var(--shadow-lg)}.page-centered-title{font-size:20px;font-weight:650;letter-spacing:-.015em;color:var(--color-text-primary);margin-bottom:4px}.page-centered-sub{font-size:14px;color:var(--color-text-tertiary);margin-bottom:var(--space-6);line-height:1.5}.map-page{position:relative;height:calc(100vh - 48px);overflow:hidden}.map-page>.leaflet-container{position:absolute;top:0;right:0;bottom:0;left:0;z-index:0}.map-sidebar{position:absolute;top:10px;left:10px;bottom:10px;width:360px;z-index:var(--z-overlay);display:flex;flex-direction:column;overflow:hidden;border-radius:var(--radius-xl);border:1px solid var(--color-sidebar-border);background:var(--color-sidebar-bg);box-shadow:var(--shadow-overlay);transition:transform var(--duration-slow) var(--ease-spring),opacity var(--duration-base) var(--ease-default)}[data-theme=dark] .map-sidebar{background:#111520f5;border-color:#ffffff0d}.map-sidebar--closed{transform:translate(calc(-100% - 12px));opacity:0;pointer-events:none}.map-sidebar-hover-zone{position:absolute;top:0;left:0;width:28px;height:100%;z-index:29}.map-sidebar-toggle{position:absolute;top:50%;right:-14px;transform:translateY(-50%);z-index:1;width:26px;height:44px;border:1px solid var(--color-border-subtle);border-left:none;border-radius:0 var(--radius-md) var(--radius-md) 0;background:var(--color-surface);color:var(--color-text-tertiary);cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:var(--shadow-sm);transition:all var(--duration-fast) var(--ease-default)}.map-sidebar-toggle:hover{color:var(--color-text-primary);background:var(--color-surface-hover)}.map-sidebar-fab{position:absolute;top:80px;left:14px;z-index:29;width:36px;height:36px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-md);border:1px solid var(--color-border-subtle);background:var(--color-surface);color:var(--color-text-secondary);font-size:18px;cursor:pointer;box-shadow:var(--shadow-md);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);transition:all var(--duration-fast) var(--ease-default);opacity:1;pointer-events:auto}.map-sidebar-fab:hover{color:var(--color-text-primary);background:var(--color-surface-hover);box-shadow:var(--shadow-lg)}.map-sidebar-fab--hidden{opacity:0;pointer-events:none}[data-theme=dark] .map-sidebar-fab{background:#111520eb;border-color:#ffffff14}[data-theme=dark] .map-sidebar-fab:hover{background:#191e2cf5}.map-sidebar-header{padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--color-border-subtle);flex-shrink:0}.map-sidebar-vessel{font-size:14px;font-weight:650;letter-spacing:-.01em;color:var(--color-text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.map-sidebar-imo{font-size:10px;font-weight:500;letter-spacing:.03em;color:var(--color-text-tertiary);white-space:nowrap}.map-sidebar-release{font-size:10px;font-weight:500;padding:3px 10px;border-radius:var(--radius-sm);color:var(--color-text-tertiary);background:transparent;border:1px solid var(--color-border-subtle);cursor:pointer;transition:all var(--duration-fast) var(--ease-default);flex-shrink:0}.map-sidebar-release:hover{color:var(--color-danger);border-color:var(--color-danger);background:var(--color-danger-subtle)}.map-sidebar-route-input{flex:1;min-width:0;height:30px;padding:0 var(--space-2-5);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-bg-primary);color:var(--color-text-primary);font-size:12px;font-weight:500;outline:none;transition:all var(--duration-fast) var(--ease-default)}.map-sidebar-route-input:focus{border-color:var(--color-accent);box-shadow:var(--shadow-ring-accent)}.map-sidebar-route-input:disabled{background:var(--color-bg-tertiary);color:var(--color-text-tertiary);border-color:var(--color-border-subtle);cursor:not-allowed}.map-sidebar-actions{padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--color-border-subtle);flex-shrink:0;display:flex;flex-direction:column;gap:6px}.map-sidebar-content{flex:1;overflow:hidden;display:flex;flex-direction:column}.map-btn-save{flex:1;height:32px;font-size:12px;font-weight:600;border:none;border-radius:var(--radius-sm);cursor:not-allowed;background:var(--color-bg-tertiary);color:var(--color-text-tertiary);transition:all var(--duration-fast) var(--ease-default)}.map-btn-save--active{cursor:pointer;background:var(--color-accent);color:#fff;box-shadow:var(--shadow-xs),inset 0 1px #ffffff1a}.map-btn-save--active:hover{background:var(--color-accent-hover);box-shadow:var(--shadow-sm),inset 0 1px #ffffff1a}.map-btn-save--active:active{transform:scale(.98)}.map-btn-secondary{height:32px;padding:0 var(--space-3);font-size:12px;font-weight:530;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text-secondary);cursor:pointer;transition:all var(--duration-fast) var(--ease-default)}.map-btn-secondary:hover{background:var(--color-surface-hover);border-color:var(--color-border-strong)}.map-btn-secondary:active{transform:scale(.98)}.map-btn-secondary:disabled{background:var(--color-bg-tertiary);color:var(--color-text-tertiary);border-color:var(--color-border-subtle);cursor:not-allowed;pointer-events:none}.map-btn-tertiary{flex:1;height:28px;font-size:11px;font-weight:530;border:1px solid var(--color-border-subtle);border-radius:var(--radius-sm);background:var(--color-bg-secondary);color:var(--color-text-secondary);cursor:pointer;transition:all var(--duration-fast) var(--ease-default)}.map-btn-tertiary:hover{background:var(--color-bg-tertiary);border-color:var(--color-border)}.map-btn-tertiary:active{transform:scale(.98)}.map-dropdown{position:absolute;right:0;top:100%;margin-top:4px;width:160px;padding:4px;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface-raised);box-shadow:var(--shadow-lg);z-index:20}.map-dropdown-item{width:100%;text-align:left;padding:7px 12px;font-size:12px;font-weight:450;color:var(--color-text-secondary);border:none;border-radius:var(--radius-sm);background:transparent;cursor:pointer;transition:all var(--duration-fast) var(--ease-default)}.map-dropdown-item:hover{background:var(--color-hover);color:var(--color-text-primary)}.map-upload-area{padding:var(--space-3);border:1px dashed var(--color-border);border-radius:var(--radius-md);background:var(--color-bg-primary);transition:all var(--duration-fast) var(--ease-default)}.map-upload-area:hover{border-color:var(--color-accent);background:var(--color-accent-subtle)}.map-msg{margin:var(--space-2) var(--space-3) 0;padding:var(--space-2-5) var(--space-3);border-radius:var(--radius-md);font-size:12px;flex-shrink:0;font-weight:450}.map-msg--error{background:var(--color-danger-subtle);color:var(--color-danger);border:1px solid rgba(208,48,48,.15);display:flex;align-items:center;justify-content:space-between}.map-msg--success{background:var(--color-success-subtle);color:var(--color-success);border:1px solid rgba(13,159,110,.15)}.map-msg--warning{background:var(--color-warning-subtle);color:var(--color-warning);border:1px solid rgba(200,122,10,.15)}.map-msg-close{background:none;border:none;color:inherit;cursor:pointer;font-size:16px;line-height:1;opacity:.5;padding:0 2px;transition:opacity var(--duration-fast) ease}.map-msg-close:hover{opacity:.9}.map-tabs{display:flex;border-bottom:1px solid var(--color-border-subtle);flex-shrink:0;gap:0;padding:0 var(--space-1)}.map-tab{flex:1;padding:10px 0 9px;font-size:11px;font-weight:530;letter-spacing:.01em;color:var(--color-text-tertiary);background:transparent;border:none;cursor:pointer;position:relative;transition:color var(--duration-fast) var(--ease-default)}.map-tab:hover{color:var(--color-text-secondary)}.map-tab--active{color:var(--color-text-primary);font-weight:600}.map-tab--active:after{content:"";position:absolute;bottom:-1px;left:20%;right:20%;height:2px;background:var(--color-accent);border-radius:1px;animation:fade-in .15s ease-out}.map-tab-count{margin-left:3px;font-size:9px;font-weight:600;color:var(--color-text-tertiary)}.map-tab-count--active{color:var(--color-accent)}.map-tab-dot{position:absolute;top:6px;right:6px;width:5px;height:5px;border-radius:50%;background:var(--color-accent)}.map-badge{font-size:10px;font-weight:550;padding:2px 7px;border-radius:var(--radius-full);white-space:nowrap;letter-spacing:.01em}.map-badge--accent{color:var(--color-accent);background:var(--color-accent-subtle)}.map-badge--purple{color:var(--color-purple);background:var(--color-purple-subtle)}.map-badge--muted{color:var(--color-text-tertiary)}.map-badge--success{color:var(--color-success)}.map-badge--warning{color:var(--color-warning)}.map-badge--danger{color:var(--color-danger)}.map-plan-card{padding:10px;border-radius:var(--radius-md);cursor:pointer;border:1px solid transparent;transition:all var(--duration-fast) var(--ease-default)}.map-plan-card:hover{background:var(--color-hover);border-color:var(--color-border-subtle)}.map-plan-card--active{background:var(--color-accent-subtle);border-color:var(--color-accent-muted)}.map-plan-card--comparing{background:var(--color-danger-subtle);border-color:#d030301f}.map-plan-action{font-size:10px;font-weight:500;padding:3px 8px;border-radius:var(--radius-xs);color:var(--color-text-tertiary);background:transparent;border:none;cursor:pointer;transition:all var(--duration-fast) var(--ease-default)}.map-plan-action:hover{color:var(--color-accent);background:var(--color-accent-subtle)}.map-plan-action--danger:hover{color:var(--color-danger);background:var(--color-danger-subtle)}.app-spinner{width:20px;height:20px;border:2px solid var(--color-border);border-top-color:var(--color-accent);border-radius:50%;animation:app-spin .6s linear infinite}.app-spinner--lg{width:28px;height:28px;border-width:2.5px}@keyframes app-spin{to{transform:rotate(360deg)}}.mon-card{border-radius:var(--radius-md);border:1px solid var(--color-border-subtle);background:var(--color-surface);overflow:hidden;transition:border-color var(--duration-fast) var(--ease-default)}.mon-card:hover{border-color:var(--color-border)}.mon-card-header{padding:var(--space-2-5) var(--space-3);display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--color-border-subtle);background:var(--color-bg-primary)}.mon-card-title{font-size:10px;font-weight:650;letter-spacing:.06em;text-transform:uppercase;color:var(--color-text-tertiary)}.mon-card-body{padding:var(--space-3)}.mon-card-footer{padding:var(--space-2) var(--space-3);border-top:1px solid var(--color-border-subtle);background:var(--color-bg-primary)}.mon-status-dot{width:6px;height:6px;border-radius:50%;flex-shrink:0}.mon-status-dot--active{background:var(--color-success);box-shadow:0 0 0 3px #0d9f6e26;animation:pulse-warning 2s ease-in-out infinite}.mon-status-dot--idle{background:var(--color-text-tertiary)}.mon-status-dot--error{background:var(--color-danger);box-shadow:0 0 0 3px #d030301f}.mon-metric{display:flex;flex-direction:column;gap:2px}.mon-metric-label{font-size:10px;font-weight:550;letter-spacing:.04em;text-transform:uppercase;color:var(--color-text-tertiary)}.mon-metric-value{font-size:15px;font-weight:650;letter-spacing:-.01em;color:var(--color-text-primary);font-variant-numeric:tabular-nums}.mon-metric-unit{font-size:11px;font-weight:450;color:var(--color-text-tertiary);margin-left:2px}.vessel-weather-label{overflow:visible!important;background:none!important;border:none!important}.tl-panel{position:absolute;bottom:0;left:0;right:0;z-index:var(--z-overlay);backdrop-filter:blur(20px) saturate(1.2);-webkit-backdrop-filter:blur(20px) saturate(1.2)}.tl-panel--light{background:#ffffffeb;border-top:1px solid rgba(0,0,0,.06);box-shadow:0 -4px 24px -4px #00000014}.tl-panel--dark,[data-theme=dark] .tl-panel--light{background:#0b0e17eb;border-top:1px solid rgba(255,255,255,.05);box-shadow:0 -4px 24px -4px #0000004d}.tl-controls{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3)}.tl-play-btn{width:32px;height:32px;border-radius:50%;border:none;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all var(--duration-fast) var(--ease-default);flex-shrink:0}.tl-play-btn--idle{background:var(--color-accent);color:#fff;box-shadow:var(--shadow-sm)}.tl-play-btn--idle:hover{background:var(--color-accent-hover);box-shadow:var(--shadow-md);transform:scale(1.05)}.tl-play-btn--active{background:var(--color-danger);color:#fff;animation:play-glow 1.8s ease-in-out infinite}.tl-speed-btn{padding:3px 8px;border-radius:var(--radius-xs);font-size:11px;font-weight:600;font-variant-numeric:tabular-nums;border:none;cursor:pointer;transition:all var(--duration-fast) var(--ease-default)}.vessel-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:var(--space-4)}.vessel-card{border:1px solid var(--color-border-subtle);border-radius:var(--radius-lg);background:var(--color-surface);padding:var(--space-5);cursor:pointer;transition:all var(--duration-base) var(--ease-default);position:relative;overflow:hidden}.vessel-card:before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:var(--color-accent);opacity:0;transition:opacity var(--duration-fast) var(--ease-default)}.vessel-card:hover{border-color:var(--color-border-strong);box-shadow:var(--shadow-md);transform:translateY(-1px)}.vessel-card:hover:before{opacity:1}.vessel-card:active{transform:translateY(0)}.vessel-card--locked{cursor:default;background:var(--color-bg-tertiary);border-color:var(--color-border-subtle)}.vessel-card--locked .vessel-card-name,.vessel-card--locked .vessel-card-imo,.vessel-card--locked .vessel-card-action{color:var(--color-text-tertiary)}.vessel-card--locked:hover{transform:none;box-shadow:none;border-color:var(--color-border-subtle)}.vessel-card--locked:before{background:var(--color-text-tertiary)}.vessel-card-name{font-size:15px;font-weight:650;letter-spacing:-.01em;color:var(--color-text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.vessel-card-imo{font-size:12px;font-weight:500;letter-spacing:.02em;color:var(--color-text-tertiary);margin-top:2px}.vessel-card-action{margin-top:var(--space-4);padding-top:var(--space-3);border-top:1px solid var(--color-border-subtle);font-size:12px;font-weight:530;color:var(--color-accent);display:flex;align-items:center;gap:4px}.page-subtitle{font-size:13px;color:var(--color-text-tertiary);margin-top:4px}.login-page{position:relative;min-height:100vh;overflow:hidden;font-family:Inter,ui-sans-serif,system-ui,-apple-system,sans-serif;color:#f0f4f8;-webkit-font-smoothing:antialiased}.login-scene{position:fixed;top:0;right:0;bottom:0;left:0;z-index:0;background:url(/login-bg.jpg) top left 30% / cover no-repeat;filter:saturate(1.08) contrast(1.02)}.login-scene:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(90deg,transparent 0%,transparent 35%,rgba(6,10,18,.15) 52%,rgba(6,10,18,.45) 72%,rgba(6,10,18,.65) 100%),linear-gradient(180deg,rgba(4,8,14,.08) 0%,transparent 30%,transparent 60%,rgba(4,8,14,.3) 100%)}.login-layout{position:relative;z-index:1;min-height:100vh;display:flex}.login-left{flex:1 1 55%;display:flex;flex-direction:column;justify-content:space-between;padding:40px 48px 60px;min-width:0}.login-right{flex:0 0 auto;width:clamp(400px,34vw,480px);display:flex;align-items:center;justify-content:center;padding:32px 40px 32px 24px}.login-badge{width:-moz-fit-content;width:fit-content;padding:8px 14px;border:1px solid rgba(255,255,255,.08);border-radius:100px;background:#ffffff0a;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);font-size:11px;font-weight:600;letter-spacing:.14em;color:#ffffffb3;text-transform:uppercase}.login-hero{max-width:560px}.login-kicker{font-size:12px;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:#82d2ffcc;margin-bottom:14px}.login-heading{margin:0;font-size:clamp(42px,4.5vw,72px);font-weight:800;line-height:.92;letter-spacing:-.035em;color:#fff;text-shadow:0 2px 40px rgba(0,0,0,.3)}.login-tagline{margin-top:16px;font-size:clamp(15px,1.2vw,18px);line-height:1.6;color:#dce6f0bf;max-width:440px}.login-panel{width:100%;max-width:420px;padding:32px 28px 28px;border-radius:24px;border:1px solid rgba(255,255,255,.08);background:#0a101a52;backdrop-filter:blur(48px) saturate(1.3);-webkit-backdrop-filter:blur(48px) saturate(1.3);box-shadow:0 0 0 1px #ffffff0d inset,0 24px 80px -12px #00000059,0 8px 24px -8px #0003}.login-accent{width:48px;height:3px;border-radius:100px;background:linear-gradient(90deg,#5cc8f0,#2ea8e0);margin-bottom:20px;opacity:.8}.login-brand{font-size:13px;font-weight:600;letter-spacing:.08em;color:#78c8f0b3;margin-bottom:6px}.login-title{margin:0 0 8px;font-size:clamp(32px,3vw,42px);font-weight:800;line-height:.95;letter-spacing:-.03em;color:#fff}.login-sub{font-size:14px;line-height:1.55;color:#becddcb3;margin-bottom:24px}.login-error{display:flex;align-items:center;gap:8px;padding:10px 14px;margin-bottom:16px;border-radius:12px;border:1px solid rgba(239,68,68,.2);background:#ef444414;color:#fca5a5;font-size:13px;font-weight:500;animation:login-shake .4s ease}@keyframes login-shake{0%,to{transform:translate(0)}20%{transform:translate(-6px)}40%{transform:translate(5px)}60%{transform:translate(-3px)}80%{transform:translate(2px)}}.login-queue-panel{margin-bottom:16px;padding:12px 14px;border-radius:12px;border:1px solid rgba(59,130,246,.2);background:#3b82f60f}.login-queue-header{display:flex;align-items:center;gap:8px;font-size:12px;font-weight:600;letter-spacing:.03em;color:#93c5fd;margin-bottom:10px}.login-queue-dot{width:6px;height:6px;border-radius:50%;background:#3b82f6;animation:login-queue-pulse 2s ease infinite}@keyframes login-queue-pulse{0%,to{opacity:.4}50%{opacity:1}}.login-queue-list{display:flex;flex-direction:column;gap:6px}.login-queue-user{display:flex;align-items:center;gap:8px;font-size:12px;color:#b4c3d2cc;font-weight:500}.login-queue-user-dot{width:5px;height:5px;border-radius:50%;background:#22c55e;flex-shrink:0}.login-queue-admin{font-size:10px;padding:1px 6px;border-radius:4px;background:#a855f726;color:#c4b5fd;font-weight:500;letter-spacing:.03em}.login-queue-hint{margin-top:10px;font-size:11px;color:#b4c3d299;font-style:italic}.login-field{margin-bottom:14px}.login-field label{display:block;font-size:12px;font-weight:500;letter-spacing:.04em;color:#b4c3d2bf;margin-bottom:6px}.login-control{position:relative}.login-input{width:100%;height:48px;border-radius:12px;border:1px solid rgba(255,255,255,.06);background:#ffffff0a;color:#eaf0f6;font-family:inherit;font-size:15px;font-weight:500;padding:0 16px;outline:none;transition:all var(--duration-base) var(--ease-default)}.login-input:focus{border-color:#5abef066;background:#ffffff0f;box-shadow:0 0 0 3px #50b4f01f}.login-input::-moz-placeholder{color:#a0afbe8c}.login-input::placeholder{color:#a0afbe8c}.login-status-dot{position:absolute;right:14px;top:50%;transform:translateY(-50%);width:8px;height:8px;border-radius:50%;background:#4ee0a0;box-shadow:0 0 0 3px #4ee0a026}.login-row{display:flex;justify-content:flex-end;margin:2px 0 20px}.login-hint{font-size:12px;font-weight:500;color:#82c8f0b3}.login-button{width:100%;height:48px;border:0;border-radius:12px;background:linear-gradient(135deg,#3cb8e8,#1a8fd4,#1478c0);color:#fff;font-family:inherit;font-size:15px;font-weight:700;cursor:pointer;transition:all var(--duration-base) var(--ease-default);box-shadow:0 1px 2px #0003,0 4px 16px -4px #1a8cd459}.login-button:hover:not(:disabled){box-shadow:0 2px 4px #0003,0 8px 24px -4px #1a8cd473;transform:translateY(-1px)}.login-button:active:not(:disabled){transform:translateY(0);box-shadow:0 1px 2px #0003}.login-button:disabled{opacity:.7;cursor:not-allowed}.login-spinner{display:inline-flex;align-items:center;gap:8px}.login-spinner svg{animation:login-spin .8s linear infinite}@keyframes login-spin{to{transform:rotate(360deg)}}.login-meta{margin-top:20px;display:grid;grid-template-columns:repeat(2,1fr);gap:8px;padding:14px;border-radius:14px;border:1px solid rgba(255,255,255,.05);background:#ffffff05}.login-meta-k{font-size:10px;font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:#a0afbea6;margin-bottom:3px}.login-meta-v{font-size:13px;font-weight:700;letter-spacing:.02em;color:#dcebf5d9}.login-footer{position:fixed;left:24px;right:24px;bottom:14px;z-index:2;height:36px;border-radius:100px;border:1px solid rgba(255,255,255,.05);background:#080e1680;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);display:flex;align-items:center;justify-content:center;padding:0 20px;font-size:12px;font-weight:500;letter-spacing:.04em;color:#c8d7e499}@keyframes login-fadeUp{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.login-panel{animation:login-fadeUp .6s cubic-bezier(.16,1,.3,1) .1s both}.login-hero{animation:login-fadeUp .6s cubic-bezier(.16,1,.3,1) .2s both}.login-badge{animation:login-fadeUp .4s cubic-bezier(.16,1,.3,1) 0s both}.login-footer{animation:login-fadeUp .4s cubic-bezier(.16,1,.3,1) .4s both}@media(max-width:960px){.login-left{display:none}.login-right{width:100%;padding:24px}.login-layout{justify-content:center}.login-scene{background-position:top left 35%!important}.login-scene:before{background:radial-gradient(ellipse 100% 100% at 50% 40%,#060a1266,#060a12d9 70%),linear-gradient(180deg,#04080e33,#04080eb3)!important}.login-panel{max-width:400px}.login-footer{left:16px;right:16px;font-size:11px}}@media(max-width:1024px){.map-sidebar{width:320px}}@media(max-width:768px){.map-sidebar{top:auto;left:0;right:0;bottom:0;width:100%;height:55vh;border-radius:var(--radius-xl) var(--radius-xl) 0 0}.map-sidebar--closed{transform:translateY(100%)}.map-sidebar-toggle{display:none}.map-sidebar-fab{bottom:14px;top:auto;left:50%;transform:translate(-50%)}.map-sidebar-hover-zone{display:none}.editor-toolbar{left:8px;right:8px;transform:none;width:auto;overflow-x:auto}.page-shell{padding:var(--space-4) var(--space-3)}.page-title{font-size:16px}.vessel-grid{grid-template-columns:1fr}.ds-card{overflow-x:auto;-webkit-overflow-scrolling:touch}.ds-table{min-width:600px}.confirm-dialog{max-width:calc(100vw - 32px);margin:0 var(--space-4)}.toast-container{left:12px;right:12px}.toast{max-width:100%}.app-header{padding:0 var(--space-2);height:44px}.app-nav-link{padding:4px 8px;font-size:12px}.app-user-name{display:none}.tl-controls{padding:var(--space-1-5) var(--space-2);flex-wrap:wrap}.ds-btn--sm{min-height:36px;padding:8px 12px}.app-nav-link{min-height:44px;display:inline-flex;align-items:center}.map-msg-close{min-width:44px;min-height:44px}}@media(max-width:375px){.app-logo{font-size:11px;padding:4px 8px}.app-nav{gap:0}.page-shell{padding:var(--space-3) var(--space-2)}.login-panel{padding:24px 20px 20px}.login-title{font-size:28px!important}}.color-secondary{color:var(--color-text-secondary)}.color-tertiary{color:var(--color-text-tertiary)}.color-primary{color:var(--color-text-primary)}.color-danger{color:var(--color-danger)}.color-mono{font-family:var(--font-mono)}.ds-table td.td-empty{padding:var(--space-4);text-align:center;color:var(--color-text-secondary)}.skeleton-card{border:1px solid var(--color-border-subtle);border-radius:var(--radius-lg);background:var(--color-surface);padding:var(--space-5);overflow:hidden}.skeleton-line{height:12px;border-radius:var(--radius-xs);background:linear-gradient(90deg,var(--color-bg-tertiary) 25%,var(--color-bg-inset) 50%,var(--color-bg-tertiary) 75%);background-size:200% 100%;animation:shimmer 1.5s ease-in-out infinite}.skeleton-line--title{height:16px;width:60%;margin-bottom:var(--space-2)}.skeleton-line--sub{height:10px;width:35%;margin-bottom:var(--space-4)}.skeleton-line--badge{height:20px;width:70px;border-radius:var(--radius-full)}.skeleton-line--action{height:10px;width:80px;margin-top:var(--space-4);padding-top:var(--space-3);border-top:1px solid var(--color-border-subtle)}.toast-container{position:fixed;top:60px;right:16px;z-index:var(--z-toast);display:flex;flex-direction:column;gap:var(--space-2);pointer-events:none}.toast{pointer-events:auto;display:flex;align-items:center;gap:var(--space-2-5);padding:var(--space-2-5) var(--space-4);border-radius:var(--radius-lg);background:var(--color-surface-raised);border:1px solid var(--color-border-subtle);box-shadow:var(--shadow-lg);font-size:13px;font-weight:500;color:var(--color-text-primary);animation:toast-enter .28s var(--ease-spring) both;max-width:360px}.toast--success{border-left:3px solid var(--color-success)}.toast--error{border-left:3px solid var(--color-danger)}.toast--warning{border-left:3px solid var(--color-warning)}.toast--info{border-left:3px solid var(--color-accent)}.toast--exiting{animation:toast-exit .2s var(--ease-default) both}.toast-icon{flex-shrink:0;width:18px;height:18px}.toast-close{flex-shrink:0;width:20px;height:20px;display:flex;align-items:center;justify-content:center;border:none;background:transparent;color:var(--color-text-tertiary);cursor:pointer;border-radius:var(--radius-xs);margin-left:var(--space-1);transition:all var(--duration-fast) var(--ease-default)}.toast-close:hover{background:var(--color-hover);color:var(--color-text-primary)}.toast-timer{position:absolute;bottom:0;left:0;height:2px;background:var(--color-accent);border-radius:0 0 0 var(--radius-lg);animation:toast-timer linear forwards}@keyframes toast-enter{0%{opacity:0;transform:translate(24px) scale(.96)}to{opacity:1;transform:translate(0) scale(1)}}@keyframes toast-exit{0%{opacity:1;transform:translate(0) scale(1)}to{opacity:0;transform:translate(24px) scale(.96)}}@keyframes toast-timer{0%{width:100%}to{width:0%}}.editor-toolbar{position:absolute;top:var(--space-3);left:50%;transform:translate(-50%);z-index:var(--z-overlay);display:flex;align-items:center;gap:2px;padding:var(--space-1) var(--space-1-5);background:var(--color-surface);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);border:1px solid var(--color-border-subtle)}[data-theme=dark] .editor-toolbar{background:#111520f5;border-color:#ffffff0f}.toolbar-btn{display:flex;align-items:center;gap:4px;padding:4px 8px;border-radius:var(--radius-sm);font-size:11px;font-weight:500;border:none;cursor:pointer;transition:all var(--duration-fast) var(--ease-default);background:transparent;color:var(--color-text-secondary)}.toolbar-btn:hover{background:var(--color-hover);color:var(--color-text-primary)}.toolbar-btn:active{transform:scale(.96)}.toolbar-btn:disabled{opacity:1;cursor:not-allowed;pointer-events:none;color:var(--color-border-strong)}.toolbar-btn--active{background:var(--color-accent-subtle);color:var(--color-accent);box-shadow:inset 0 0 0 1px var(--color-accent-muted)}.toolbar-btn--primary{background:var(--color-accent);color:#fff}.toolbar-btn--primary:hover{background:var(--color-accent-hover);color:#fff}.toolbar-btn--purple{background:var(--color-purple-subtle);color:var(--color-purple);box-shadow:inset 0 0 0 1px var(--color-purple-muted)}.toolbar-btn--locked{background:var(--color-bg-tertiary);color:var(--color-text-tertiary)}.toolbar-divider{width:1px;height:20px;background:var(--color-border-subtle);margin:0 2px;flex-shrink:0}.toolbar-icon{width:14px;height:14px;flex-shrink:0}.toolbar-icon--lg{width:16px;height:16px}.toolbar-hint{margin-left:4px;font-size:10px;font-weight:500;color:var(--color-purple);white-space:nowrap}.toolbar-dot{width:6px;height:6px;border-radius:50%;flex-shrink:0}.toolbar-dot--warning{background:var(--color-warning)}.toolbar-dot--purple{background:var(--color-purple);animation:cursor-pulse 2s ease-in-out infinite}.confirm-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--z-modal);display:flex;align-items:center;justify-content:center;padding:var(--space-4);background:#0f162380;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);animation:confirm-overlay-in .18s ease-out}[data-theme=dark] .confirm-overlay{background:#0009}.confirm-dialog{width:100%;max-width:400px;background:var(--color-surface);border-radius:var(--radius-xl);border:1px solid var(--color-border-subtle);box-shadow:var(--shadow-overlay);animation:confirm-dialog-in .22s var(--ease-spring);overflow:hidden}.confirm-dialog-body{padding:var(--space-6) var(--space-6) var(--space-4)}.confirm-dialog-title{font-size:16px;font-weight:650;letter-spacing:-.01em;color:var(--color-text-primary);margin-bottom:var(--space-2)}.confirm-dialog-desc{font-size:13px;line-height:1.5;color:var(--color-text-secondary)}.confirm-dialog-actions{display:flex;gap:var(--space-2);padding:var(--space-3) var(--space-6) var(--space-5);justify-content:flex-end}@keyframes confirm-overlay-in{0%{opacity:0}to{opacity:1}}@keyframes confirm-dialog-in{0%{opacity:0;transform:scale(.95) translateY(8px)}to{opacity:1;transform:scale(1) translateY(0)}}.map-slot-top-right{position:absolute;top:var(--space-3);right:var(--space-3);z-index:var(--z-overlay)}.map-slot-bottom{position:absolute;bottom:0;left:0;right:0;z-index:var(--z-overlay)}.upload-zone{padding:var(--space-4);border:2px dashed var(--color-border);border-radius:var(--radius-lg);background:var(--color-bg-primary);text-align:center;cursor:pointer;transition:all var(--duration-base) var(--ease-default)}.upload-zone:hover,.upload-zone--dragover{border-color:var(--color-accent);background:var(--color-accent-subtle)}.upload-zone-icon{width:32px;height:32px;margin:0 auto var(--space-2);color:var(--color-text-tertiary)}.upload-zone-text{font-size:13px;font-weight:500;color:var(--color-text-secondary)}.upload-zone-hint{font-size:11px;color:var(--color-text-tertiary);margin-top:var(--space-1)}.error-fallback-inline{display:flex;align-items:center;justify-content:center;gap:var(--space-2);padding:var(--space-4) var(--space-3);font-size:12px;color:var(--color-text-tertiary)}.error-fallback-inline button{font-size:12px;font-weight:500;color:var(--color-accent);background:transparent;border:none;cursor:pointer;text-decoration:underline;text-underline-offset:2px}.error-fallback-inline button:hover{color:var(--color-accent-hover)}.ds-badge--danger{color:var(--color-danger);background:var(--color-danger-subtle)}.ds-badge--info{color:var(--color-info);background:var(--color-info-subtle)}.ds-badge--purple{color:var(--color-purple);background:var(--color-purple-subtle)}.ds-badge--error{color:var(--color-danger);background:var(--color-danger-subtle)}.ds-badge--neutral{color:var(--color-text-tertiary);background:var(--color-bg-tertiary)}.ds-badge--xs{font-size:10px;padding:2px 7px}.map-btn-secondary:focus-visible,.map-btn-tertiary:focus-visible,.map-btn-save:focus-visible,.map-sidebar-fab:focus-visible,.map-sidebar-toggle:focus-visible,.map-sidebar-release:focus-visible,.map-tab:focus-visible,.tl-play-btn:focus-visible,.tl-speed-btn:focus-visible,.toolbar-btn:focus-visible,.vessel-card:focus-visible,.map-plan-card:focus-visible,.map-plan-action:focus-visible,.map-dropdown-item:focus-visible,.toast-close:focus-visible,.upload-zone:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.map-dropdown{animation:dropdown-enter .15s var(--ease-spring) both;transform-origin:top right}@keyframes dropdown-enter{0%{opacity:0;transform:scale(.95) translateY(-4px)}to{opacity:1;transform:scale(1) translateY(0)}}.map-sidebar:not(.map-sidebar--closed){animation:sidebar-enter .28s var(--ease-spring) both}@keyframes sidebar-enter{0%{opacity:0;transform:translate(-12px)}to{opacity:1;transform:translate(0)}}@media(max-width:768px){.map-sidebar:not(.map-sidebar--closed){animation:sidebar-enter-mobile .28s var(--ease-spring) both}@keyframes sidebar-enter-mobile{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}}.map-sidebar-content>*{animation:content-fade .15s ease-out}.vessel-card-action{transition:color var(--duration-fast) var(--ease-default)}.vessel-card:hover .vessel-card-action{color:var(--color-accent-hover)}.toast-container{pointer-events:none}.toast{position:relative}.map-msg-close{min-width:28px;min-height:28px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-xs);opacity:.6}.map-msg-close:hover{opacity:1;background:#0000000d}[data-theme=dark] .map-msg-close:hover{background:#ffffff0d}.mon-card{transition:border-color var(--duration-fast) var(--ease-default),box-shadow var(--duration-fast) var(--ease-default)}.mon-card:hover{box-shadow:var(--shadow-sm)}.login-error{animation:login-shake .4s ease,login-fadeUp .3s ease-out}.login-queue-panel{animation:login-fadeUp .3s var(--ease-spring) both}.page-shell{animation:content-fade .2s ease-out}.ds-table tbody tr{transition:background-color var(--duration-fast) var(--ease-default)}.ds-alert{animation:content-fade .2s ease-out}[data-theme=light] .skeleton-line,:root .skeleton-line{background:linear-gradient(90deg,var(--color-bg-tertiary) 25%,var(--color-bg-inset) 50%,var(--color-bg-tertiary) 75%);background-size:200% 100%}.ds-btn--primary:disabled{background:var(--color-accent-muted);color:var(--color-bg-secondary)}.map-btn-tertiary:disabled{background:var(--color-bg-tertiary);color:var(--color-text-tertiary);border-color:var(--color-border-subtle);cursor:not-allowed;pointer-events:none}.hover\:border-blue-400:hover{--tw-border-opacity: 1;border-color:rgb(96 165 250 / var(--tw-border-opacity, 1))}.hover\:border-slate-300:hover{--tw-border-opacity: 1;border-color:rgb(203 213 225 / var(--tw-border-opacity, 1))}.hover\:bg-amber-700:hover{--tw-bg-opacity: 1;background-color:rgb(180 83 9 / var(--tw-bg-opacity, 1))}.hover\:bg-blue-100:hover{--tw-bg-opacity: 1;background-color:rgb(219 234 254 / var(--tw-bg-opacity, 1))}.hover\:bg-blue-50\/50:hover{background-color:#eff6ff80}.hover\:bg-blue-50\/60:hover{background-color:#eff6ff99}.hover\:bg-blue-700:hover{--tw-bg-opacity: 1;background-color:rgb(29 78 216 / var(--tw-bg-opacity, 1))}.hover\:bg-green-50:hover{--tw-bg-opacity: 1;background-color:rgb(240 253 244 / var(--tw-bg-opacity, 1))}.hover\:bg-red-100:hover{--tw-bg-opacity: 1;background-color:rgb(254 226 226 / var(--tw-bg-opacity, 1))}.hover\:bg-slate-100:hover{--tw-bg-opacity: 1;background-color:rgb(241 245 249 / var(--tw-bg-opacity, 1))}.hover\:bg-slate-200:hover{--tw-bg-opacity: 1;background-color:rgb(226 232 240 / var(--tw-bg-opacity, 1))}.hover\:bg-slate-50:hover{--tw-bg-opacity: 1;background-color:rgb(248 250 252 / var(--tw-bg-opacity, 1))}.hover\:bg-white:hover{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.hover\:text-blue-600:hover{--tw-text-opacity: 1;color:rgb(37 99 235 / var(--tw-text-opacity, 1))}.hover\:text-red-500:hover{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.hover\:text-slate-600:hover{--tw-text-opacity: 1;color:rgb(71 85 105 / var(--tw-text-opacity, 1))}.hover\:text-slate-700:hover{--tw-text-opacity: 1;color:rgb(51 65 85 / var(--tw-text-opacity, 1))}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-1: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(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\:ring-blue-500:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(59 130 246 / var(--tw-ring-opacity, 1))}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-40:disabled{opacity:.4}.group:hover .group-hover\:opacity-100{opacity:1}@media(min-width:640px){.sm\:inline{display:inline}}@media(min-width:768px){.md\:block{display:block}}
