:root{--bg-color:#121212;--surface-color:#1f1f1f;--primary-color:#a8c7fa;--on-primary-color:#003355;--on-surface-color:#e3e3e3;--on-surface-variant-color:#c4c7c5;--ripple-color:rgba(255,255,255,0.08);--shadow-1:0 1px 2px rgba(0,0,0,0.32);--shadow-2:0 4px 12px rgba(0,0,0,0.28);--route-duration:280ms;--route-easing:cubic-bezier(0.22,0.9,0.35,1);--enter-offset:100%;--exit-offset:20%;--app-main-font:"Roboto",system-ui,-apple-system,"Helvetica Neue",Arial;--ui-font-size:16px;--blob-bg-color:#3b82f6;--blob-text-color:#ffffff}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html{-webkit-text-size-adjust:100%;font-family:var(--app-main-font);background:var(--bg-color);color:var(--on-surface-color);font-size:var(--ui-font-size)}body{margin:0;overscroll-behavior-y:contain;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-overflow-scrolling:touch}#app{position:relative;width:100%;height:100vh;overflow:hidden;display:flex;flex-direction:column;background:var(--bg-color);contain:layout size style}.router-container{position:relative;flex:auto;overflow:hidden;background:var(--bg-color);contain:layout paint;perspective:1200px}.route{overflow-y:auto;position:absolute;inset:0;width:100%;height:100%;display:flex;flex-direction:column;background-color:var(--bg-color);backface-visibility:hidden;-webkit-backface-visibility:hidden;transform:translate3d(0,0,0);transition:transform var(--route-duration)var(--route-easing),opacity 220ms ease;z-index:1;contain:paint;opacity:1}.route.active{z-index:2;transform:translate3d(0,0,0)scale(1);opacity:1}.route.animating{will-change:transform,opacity}.router-container.gesture-active{touch-action:pan-y;-webkit-overflow-scrolling:touch}[data-route]{touch-action:manipulation}.jelly-blob{position:absolute;background:var(--blob-bg-color);color:var(--blob-text-color);border-radius:50px;pointer-events:none;z-index:0;transition:all .6s cubic-bezier(.175,.885,.32,1.275);transform-origin:center;opacity:.8}.jelly-blob.stretching{transition:all .4s cubic-bezier(.25,.46,.45,.94);border-radius:25px}.jelly-blob.bouncing{animation:jellyBounce .6s cubic-bezier(.68,-.55,.265,1.55)}@keyframes jellyBounce{0%{transform:scale(1)scaleY(1)}20%{transform:scale(1.1)scaleY(.9)}40%{transform:scale(.95)scaleY(1.05)}60%{transform:scale(1.02)scaleY(.98)}80%{transform:scale(.99)scaleY(1.01)}100%{transform:scale(1)scaleY(1)}}.route.entering-forward{transform:translate3d(100%,0,0);z-index:3}.route.exiting-forward{transform:translate3d(-100%,0,0);z-index:2;pointer-events:none}.route.entering-backward{transform:translate3d(0,0,0)scale(.95);opacity:.6;z-index:2}.route.exiting-backward{transform:translate3d(100%,0,0);z-index:3;pointer-events:none}.route.entering-initial{transform:translate3d(0,0,0);opacity:0;transition:opacity 300ms ease-out}.route.entering-initial.active{opacity:1}.route.preloaded{visibility:hidden;pointer-events:none}@media(prefers-reduced-motion:reduce){.route,.toast,.modal-dialog,.bottom-sheet{transition:none!important;animation:none!important}}.elevated{box-shadow:var(--shadow-1)}.elevated-strong{box-shadow:var(--shadow-2)}.ripple-container{position:relative;overflow:hidden;-webkit-mask-image:-webkit-radial-gradient(white,black);mask-image:radial-gradient(white,black)}.ripple{position:absolute;width:120px;height:120px;border-radius:50%;background-color:var(--ripple-color);transform:scale(0);opacity:1;animation:v-ripple 560ms linear;pointer-events:none;will-change:transform,opacity}@keyframes v-ripple{to{transform:scale(3.2);opacity:0}}.pull-to-refresh-indicator{position:absolute;top:-10%;left:50%;transform:translateX(-50%)scale(.88);width:120px;height:48px;border-radius:999999px;display:flex;align-items:center;justify-content:center;border:2px solid #3d3d3d;background:var(--surface-color);color:var(--primary-color);opacity:0;transition:transform 180ms ease,opacity 180ms ease;z-index:11}.pull-to-refresh-indicator.visible{opacity:1;transform:translateX(-50%)scale(1)}.pull-to-refresh-indicator.loading{top:8%;box-shadow:#121212}#toast-root{position:fixed;bottom:35px;left:50%;transform:translateX(-50%);z-index:999999;display:flex;flex-direction:column;gap:10px;width:calc(100% - 32px);max-width:420px;pointer-events:none}.toast{pointer-events:auto;display:flex;align-items:center;justify-content:space-between;gap:8px;padding:14px;min-height:44px;min-width:100%;background:#262626;color:var(--on-surface-color);border-radius:12px;opacity:0;transform:translateY(10px)scale(.98);transition:transform 250ms var(--route-easing),opacity 240ms ease;will-change:transform,opacity;touch-action:pan-x}.toast.show{opacity:1;transform:translateY(0)scale(1)}.toast.dragging{transition:none;cursor:grabbing}#modal-root{position:fixed;inset:0;z-index:9998;pointer-events:none}.modal-overlay{position:absolute;inset:0;background-color:rgba(0,0,0,.5);display:flex;align-items:center;justify-content:center;opacity:0;pointer-events:none;transition:opacity 220ms ease}.modal-overlay.visible{opacity:1;pointer-events:auto}.modal-overlay.blur{backdrop-filter:blur(6px)}.modal-dialog{background:var(--surface-color);border-radius:18px;width:calc(100% - 48px);max-width:420px;padding:20px;transform:scale(.98);opacity:0;transition:transform 220ms var(--route-easing),opacity 220ms ease;will-change:transform,opacity}.modal-overlay.visible .modal-dialog{transform:scale(1);opacity:1}.modal-header{font-size:20px;font-weight:500;margin-bottom:5px}.modal-body{color:var(--on-surface-variant-color);line-height:1.4;margin-bottom:20px}.modal-footer{display:flex;justify-content:flex-end;gap:8px}#bottom-sheet-root{position:fixed;inset:0;z-index:1000;pointer-events:none;transform:translateZ(0);backface-visibility:hidden;-webkit-backface-visibility:hidden;overflow:hidden}.bottom-sheet-overlay{position:absolute;inset:0;background:rgba(0,0,0,.462);opacity:0;transition:opacity 260ms ease;pointer-events:auto;transform:translateZ(0);backface-visibility:hidden;-webkit-backface-visibility:hidden}.bottom-sheet-overlay.visible{opacity:1}.bottom-sheet{position:absolute;left:0;right:0;bottom:0;background:var(--surface-color);border-top-left-radius:12px;border-top-right-radius:12px;max-height:95vh;transform:translate3d(0,100%,0);transition:transform 320ms var(--route-easing);pointer-events:auto;contain:layout style paint;backface-visibility:hidden;-webkit-backface-visibility:hidden;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overscroll-behavior:contain;touch-action:none}.bottom-sheet:focus,.bottom-sheet:focus-visible{outline:none!important;box-shadow:none!important}.bottom-sheet.visible{transform:translate3d(0,0,0)}.bottom-sheet[data-dragging=true]{transition:none!important;will-change:transform!important}.bottom-sheet-overlay[data-dragging=true]{transition:none!important;will-change:opacity!important}.bottom-sheet-handle{height:6px;width:40px;border-radius:999px;background:#636363;margin:10px auto;touch-action:none;cursor:grab;position:relative;transform:translateZ(0);transition:background-color 150ms ease;user-select:none;-webkit-user-select:none}.bottom-sheet-handle::before{content:"";position:absolute;top:-16px;left:-20px;right:-20px;bottom:-16px}.bottom-sheet-handle:active{cursor:grabbing;background:#555}.bottom-sheet-content{padding:12px 16px;overflow-y:auto;max-height:90vh;-webkit-overflow-scrolling:touch;scroll-behavior:smooth;contain:paint;overflow-x:hidden;padding-bottom:calc(12px+env(safe-area-inset-bottom,0px));touch-action:pan-y;user-select:none;-webkit-user-select:none}.bottom-sheet-content *{user-select:text;-webkit-user-select:text}.bottom-sheet-content::-webkit-scrollbar{width:4px}.bottom-sheet-content::-webkit-scrollbar-track{background:0 0}.bottom-sheet-content::-webkit-scrollbar-thumb{background:rgba(0,0,0,.2);border-radius:2px}.bottom-sheet-content::-webkit-scrollbar-thumb:hover{background:rgba(0,0,0,.3)}@media(hover:none) and (pointer:coarse){.bottom-sheet-handle{margin:14px auto}.bottom-sheet-handle::before{top:-20px;left:-24px;right:-24px;bottom:-20px}.bottom-sheet-content{overscroll-behavior-y:contain}.bottom-sheet{overscroll-behavior:none}}@media(prefers-reduced-motion:reduce){.bottom-sheet-overlay,.bottom-sheet{transition-duration:0ms}.bottom-sheet-content{scroll-behavior:auto}}@media(-webkit-min-device-pixel-ratio:2),(min-resolution:192dpi){.bottom-sheet{border-top-left-radius:11.5px;border-top-right-radius:11.5px}}.bottom-sheet-overlay.animating{will-change:opacity}.bottom-sheet.animating{will-change:transform}.bottom-sheet-overlay:not([data-dragging=true]),.bottom-sheet:not([data-dragging=true]){transform-origin:center bottom}.expand-overlay{position:fixed;inset:0;background:rgba(0,0,0,.5);opacity:0;pointer-events:none;transition:opacity 260ms ease;z-index:9998}.expand-overlay.active{opacity:1;pointer-events:auto}.expand-modal{position:fixed;z-index:9999;border-radius:12px;overflow:hidden;transition:top 350ms var(--route-easing),left 350ms var(--route-easing),width 350ms var(--route-easing),height 350ms var(--route-easing),border-radius 250ms ease;will-change:top,left,width,height}.expand-modal .expand-close{position:absolute;top:8px;right:10px;font-size:22px;cursor:pointer;z-index:10000}.expand-modal-content{padding:18px}.hidden{display:none!important}.center{display:flex;align-items:center;justify-content:center}.ti{font-family:tabler-icons;font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media(max-width:520px){.modal-dialog{width:calc(100% - 24px);border-radius:14px}.bottom-sheet{border-top-left-radius:10px;border-top-right-radius:10px}}.ios-picker{display:flex;justify-content:center;gap:12px;height:180px;overflow:hidden;position:relative;background:var(--surface-color);border-radius:12px;font-family:sans-serif}.ios-picker-col{flex:1;overflow-y:auto;scroll-snap-type:y mandatory;text-align:center;font-size:18px;height:100%;padding:60px 0;scrollbar-width:none}.ios-picker-col::-webkit-scrollbar{display:none}.ios-picker-col div{padding:10px 0;scroll-snap-align:center;color:#888;font-size:18px}.ios-picker-col div.active{color:#fff;font-weight:700;font-size:20px}.ios-picker-highlight{position:absolute;top:50%;left:0;right:0;height:40px;margin-top:-20px;border-top:1px solid #4d4d4d;border-bottom:1px solid #4d4d4d;pointer-events:none}.toggle-btn{--toggle-width:48px;--toggle-height:28px;--thumb-size:22px;--track-radius:999px;--track-bg-off:#e6e6e6;--track-bg-on:#3b82f6;--thumb-bg:#ffffff;--transition:180ms cubic-bezier(0.2,0.8,0.2,1);display:inline-flex;align-items:center;gap:8px;user-select:none;font-family:system-ui,-apple-system,segoe ui,Roboto,helvetica neue,Arial;font-size:.875rem}.toggle-btn.size-sm{--toggle-width:36px;--toggle-height:20px;--thumb-size:16px;font-size:.75rem}.toggle-btn.size-md{--toggle-width:48px;--toggle-height:28px;--thumb-size:22px;font-size:.875rem}.toggle-btn.size-lg{--toggle-width:64px;--toggle-height:36px;--thumb-size:30px;font-size:1rem}.toggle-btn .labels{display:inline-flex;gap:6px;align-items:center}.toggle-btn .track{position:relative;width:var(--toggle-width);height:var(--toggle-height);border-radius:var(--track-radius);background:var(--track-bg-off);box-shadow:inset 0 0 0 1px rgba(0,0,0,3%);transition:background var(--transition),box-shadow var(--transition);flex:none;cursor:pointer}.toggle-btn.on .track{background:var(--track-bg-on);box-shadow:0 2px 6px rgba(59,130,246,.18)}.toggle-btn .thumb{position:absolute;top:50%;left:3px;transform:translate(0,-50%);width:var(--thumb-size);height:var(--thumb-size);border-radius:50%;background:var(--thumb-bg);box-shadow:0 1px 3px rgba(0,0,0,.18);transition:transform var(--transition),left var(--transition);will-change:transform,left;display:flex;align-items:center;justify-content:center;overflow:hidden}.toggle-btn .thumb .icon{display:inline-flex;align-items:center;justify-content:center;width:100%;height:100%;line-height:0;font-size:.8em}.toggle-btn.on .thumb{left:calc(100% - var(--thumb-size) - 3px)}.toggle-btn .track:focus{outline:none;box-shadow:0 0 0 3px rgba(59,130,246,.12)}.toggle-btn.disabled{opacity:.45;pointer-events:none}.toggle-btn .label-off,.toggle-btn .label-on{display:inline-block;min-width:20px;text-align:left;color:#16212a;opacity:.9}.toggle-btn .label-off{opacity:.7}.toggle-btn.on .label-on{font-weight:600}.toggle-btn:not(.on) .label-off{font-weight:600}@media(prefers-reduced-motion:reduce){.toggle-btn .thumb,.toggle-btn .track{transition:none}}.anim-infinite{animation-iteration-count:infinite!important}.anim-shimmer{position:relative;overflow:hidden;background-size:200% 100%;animation:anim-shimmer-animation var(--shimmer-duration,1.5s)ease-in-out infinite}.anim-shimmer::after{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient( var(--shimmer-angle,45deg),transparent 0%,var(--shimmer-color,rgba(255,255,255,.3)) 50%,transparent 100% );animation:anim-shimmer-slide var(--shimmer-duration,1.5s)ease-in-out infinite}@keyframes anim-shimmer-animation{0%{background-position:200% 0}100%{background-position:-200% 0}}@keyframes anim-shimmer-slide{0%{left:-100%}100%{left:100%}}.anim-fade-in{animation:anim-fade-in-animation var(--fade-duration,300ms)ease-out var(--fade-delay,0ms)forwards;opacity:0}.anim-fade-out{animation:anim-fade-out-animation var(--fade-duration,300ms)ease-out var(--fade-delay,0ms)forwards;opacity:1}@keyframes anim-fade-in-animation{from{opacity:0}to{opacity:1}}@keyframes anim-fade-out-animation{from{opacity:1}to{opacity:0}}.anim-slide-in{animation:var(--slide-duration,400ms)ease-out var(--slide-delay,0ms)forwards;opacity:0}.anim-slide-out{animation:var(--slide-duration,400ms)ease-in var(--slide-delay,0ms)forwards;opacity:1}.anim-slide-in.anim-slide-left{animation-name:anim-slide-in-left}.anim-slide-in.anim-slide-right{animation-name:anim-slide-in-right}.anim-slide-in.anim-slide-up{animation-name:anim-slide-in-up}.anim-slide-in.anim-slide-down{animation-name:anim-slide-in-down}.anim-slide-out.anim-slide-left{animation-name:anim-slide-out-left}.anim-slide-out.anim-slide-right{animation-name:anim-slide-out-right}.anim-slide-out.anim-slide-up{animation-name:anim-slide-out-up}.anim-slide-out.anim-slide-down{animation-name:anim-slide-out-down}@keyframes anim-slide-in-left{from{opacity:0;transform:translateX(calc(-1 * var(--slide-distance,20px)))}to{opacity:1;transform:translateX(0)}}@keyframes anim-slide-in-right{from{opacity:0;transform:translateX(var(--slide-distance,20px))}to{opacity:1;transform:translateX(0)}}@keyframes anim-slide-in-up{from{opacity:0;transform:translateY(calc(-1 * var(--slide-distance,20px)))}to{opacity:1;transform:translateY(0)}}@keyframes anim-slide-in-down{from{opacity:0;transform:translateY(var(--slide-distance,20px))}to{opacity:1;transform:translateY(0)}}@keyframes anim-slide-out-left{from{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(calc(-1 * var(--slide-distance,20px)))}}@keyframes anim-slide-out-right{from{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(var(--slide-distance,20px))}}@keyframes anim-slide-out-up{from{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(calc(-1 * var(--slide-distance,20px)))}}@keyframes anim-slide-out-down{from{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(var(--slide-distance,20px))}}.anim-scale{animation:anim-scale-animation var(--scale-duration,300ms)ease-out var(--scale-delay,0ms)forwards;transform:scale(var(--scale-from,.8));opacity:0}@keyframes anim-scale-animation{from{transform:scale(var(--scale-from,.8));opacity:0}to{transform:scale(var(--scale-to,1));opacity:1}}.anim-zoom-in{animation:anim-zoom-in-animation var(--zoom-duration,400ms)ease-out var(--zoom-delay,0ms)forwards;opacity:0;transform:scale(.3)}.anim-zoom-out{animation:anim-zoom-out-animation var(--zoom-duration,400ms)ease-in var(--zoom-delay,0ms)forwards;opacity:1;transform:scale(1)}@keyframes anim-zoom-in-animation{from{opacity:0;transform:scale(.3)}to{opacity:1;transform:scale(1)}}@keyframes anim-zoom-out-animation{from{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.3)}}.anim-pulse{animation:anim-pulse-animation var(--pulse-duration,600ms)ease-in-out}@keyframes anim-pulse-animation{0%,100%{transform:scale(1)}50%{transform:scale(var(--pulse-intensity,1.05))}}.anim-highlight{animation:anim-highlight-animation var(--highlight-duration,800ms)ease-out}@keyframes anim-highlight-animation{0%,100%{background-color:initial}50%{background-color:var(--highlight-color,rgba(255,215,0,.3))}}.anim-bounce{animation:anim-bounce-animation var(--bounce-duration,600ms)ease-out}@keyframes anim-bounce-animation{0%,100%{transform:translateY(0)}25%{transform:translateY(calc(-1 * var(--bounce-height,10px)))}50%{transform:translateY(0)}75%{transform:translateY(calc(-.5 * var(--bounce-height,10px)))}}.anim-shake{animation:anim-shake-animation var(--shake-duration,500ms)ease-in-out}@keyframes anim-shake-animation{0%,100%{transform:translateX(0)}10%,30%,50%,70%,90%{transform:translateX(calc(-1 * var(--shake-intensity,5px)))}20%,40%,60%,80%{transform:translateX(var(--shake-intensity,5px))}}.anim-swing{animation:anim-swing-animation var(--swing-duration,1e3ms)ease-in-out;transform-origin:top center}@keyframes anim-swing-animation{20%{transform:rotate(15deg)}40%{transform:rotate(-10deg)}60%{transform:rotate(5deg)}80%{transform:rotate(-5deg)}100%{transform:rotate(0)}}.anim-wobble{animation:anim-wobble-animation var(--wobble-duration,800ms)ease-in-out}@keyframes anim-wobble-animation{0%,100%{transform:translateX(0)rotate(0)}15%{transform:translateX(-25px)rotate(-5deg)}30%{transform:translateX(20px)rotate(3deg)}45%{transform:translateX(-15px)rotate(-3deg)}60%{transform:translateX(10px)rotate(2deg)}75%{transform:translateX(-5px)rotate(-1deg)}}.anim-ripple{position:absolute;border-radius:50%;background-color:var(--ripple-color,rgba(255,255,255,.6));transform:scale(0);animation:anim-ripple-animation 600ms ease-out;pointer-events:none}@keyframes anim-ripple-animation{to{transform:scale(2);opacity:0}}.anim-skeleton-container{padding:12px}.anim-skeleton-line{background:linear-gradient(90deg,#e0e0e0 0%,#f0f0f0 50%,#e0e0e0 100%);background-size:200% 100%;border-radius:4px;animation:anim-skeleton-animation 1.5s ease-in-out infinite}@keyframes anim-skeleton-animation{0%{background-position:200% 0}100%{background-position:-200% 0}}.anim-glow{animation:anim-glow-animation var(--glow-duration,1500ms)ease-in-out}@keyframes anim-glow-animation{0%,100%{box-shadow:0 0 var(--glow-size,10px)var(--glow-color,rgba(66,153,225,.6))}50%{box-shadow:0 0 calc(var(--glow-size,10px) * 2)var(--glow-color,rgba(66,153,225,.6))}}.anim-flip{animation:var(--flip-duration,600ms)ease-in-out}.anim-flip.anim-flip-y{animation-name:anim-flip-y-animation}.anim-flip.anim-flip-x{animation-name:anim-flip-x-animation}@keyframes anim-flip-y-animation{0%{transform:perspective(400px)rotateY(0)}50%{transform:perspective(400px)rotateY(180deg)}100%{transform:perspective(400px)rotateY(360deg)}}@keyframes anim-flip-x-animation{0%{transform:perspective(400px)rotateX(0)}50%{transform:perspective(400px)rotateX(180deg)}100%{transform:perspective(400px)rotateX(360deg)}}.anim-hover-lift{transition:transform var(--lift-duration,200ms)ease-out,box-shadow var(--lift-duration,200ms)ease-out;cursor:pointer}.anim-hover-lift:hover{transform:translateY(var(--lift-y,-4px));box-shadow:var(--lift-shadow,0 10px 25px rgba(0,0,0,.15))}.anim-rotate{animation:anim-rotate-animation var(--rotate-duration,600ms)ease-in-out var(--rotate-delay,0ms)}@keyframes anim-rotate-animation{from{transform:rotate(0)}to{transform:rotate(var(--rotate-degrees,360deg))}}.anim-spin{animation:anim-spin-animation var(--spin-duration,1e3ms)linear}@keyframes anim-spin-animation{from{transform:rotate(0)}to{transform:rotate(360deg)}}.anim-progress-bar{position:absolute;bottom:0;left:0;width:0;height:4px;background:#4299e1;border-radius:2px;transition:width 300ms ease-out}.anim-smooth-transition{transition:all 300ms ease-out}.anim-no-transition{transition:none!important}.anim-gpu-accelerated{transform:translateZ(0);backface-visibility:hidden;perspective:1e3px}