.topbar{position:fixed;top:0;left:0;right:0;display:flex;align-items:center;justify-content:space-between;padding:12px 20px;padding-top:calc(12px + env(safe-area-inset-top));background:#020c1beb;border-bottom:1px solid var(--border);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);z-index:90}.topbar__title{display:flex;align-items:center;gap:10px;font-weight:600;font-size:1rem;color:var(--text-primary)}.topbar__logo{height:34px;width:auto;flex-shrink:0;cursor:pointer;margin-left:-8px}.topbar__title-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.topbar__right{display:flex;align-items:center;gap:10px}.topbar__user-btn--admin{color:var(--warn);background:var(--warn-dim)}.topbar__user-btn--mnks{color:var(--wave);background:var(--wave-dim)}.topbar__user-panel-avatar--mnks{background:var(--wave-dim);color:var(--wave)}.topbar__user-panel-name--mnks{color:var(--wave)}.topbar__user-btn-ring{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;pointer-events:none;animation:admin-ring-sweep 2.2s ease-in-out infinite}.topbar__user-btn-ring rect{stroke:#ffd54f;filter:drop-shadow(0 0 3px rgba(255,200,60,.7)) drop-shadow(0 0 8px rgba(255,180,40,.3))}.topbar__user-btn--admin:hover .topbar__user-btn-ring{animation-duration:1.4s}.topbar__user-panel{position:fixed;top:60px;right:12px;width:200px;z-index:100;padding:0}.topbar__user-panel-header{padding:16px;display:flex;align-items:center;gap:12px}.topbar__user-panel-avatar{width:36px;height:36px;border-radius:50%;background:var(--biolum-dim);color:var(--biolum);display:flex;align-items:center;justify-content:center;font-weight:700;font-size:.9rem;flex-shrink:0}.topbar__user-panel-avatar--admin{background:#ffb74d26;color:var(--warn)}.topbar__user-panel-info{display:flex;flex-direction:column;gap:1px;min-width:0}.topbar__user-panel-name{font-family:var(--font-mono);font-size:.82rem;font-weight:600;color:var(--text-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.topbar__user-panel-name--admin{color:var(--warn)}.topbar__user-panel-role{font-size:.7rem;color:var(--text-muted)}.topbar__user-panel-divider{height:1px;background:var(--border);margin:0 12px}.topbar__user-panel-btn{display:flex;align-items:center;justify-content:space-between;width:100%;padding:10px 16px;background:none;border:none;color:var(--text-primary);font-family:var(--font-body);font-size:.82rem;cursor:pointer;transition:background .15s}.topbar__user-panel-btn:hover{background:var(--wave-dim);color:var(--wave)}.topbar__user-panel-btn--danger:hover{background:#ff52521a;color:var(--danger)}.topbar__notif-wrap,.topbar__notif-btn{position:relative}.topbar__notif-badge{position:absolute;top:-2px;right:-2px;min-width:17px;height:17px;padding:0 5px;background:var(--danger);color:#fff;font-family:var(--font-mono);font-size:.62rem;font-weight:700;line-height:17px;text-align:center;border-radius:9px;pointer-events:none}.topbar__overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:95;background:transparent}.card.topbar__notif-panel{--notif-surface: #0d1b2d;--notif-item-surface: #10243a;--notif-unread-surface: #17334f;--notif-hover-surface: #1b3b59;position:fixed;top:60px;right:12px;width:min(400px,calc(100vw - 24px));max-height:74vh;display:flex;flex-direction:column;overflow:hidden;z-index:100;padding:0;background:var(--notif-surface);border-radius:18px;box-shadow:0 18px 60px #0000006b,0 0 0 1px var(--border);animation:notif-panel-in .18s ease-out}.topbar__notif-header{display:flex;align-items:center;justify-content:space-between;min-height:64px;padding:10px 10px 10px 16px;border-bottom:1px solid var(--border);background:var(--notif-surface);flex-shrink:0}.topbar__notif-heading{display:flex;align-items:center;gap:9px;min-width:0}.topbar__notif-title{color:var(--text-primary);font-size:1rem;font-weight:650}.topbar__notif-count{min-width:24px;height:24px;padding:0 7px;border-radius:12px;background:var(--wave-dim);color:var(--wave);font:700 .68rem/24px var(--font-mono);text-align:center}.topbar__notif-header-actions{display:flex;align-items:center;gap:2px}.topbar__notif-action,.topbar__notif-item-delete{width:40px;height:40px;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;padding:0;border:0;border-radius:12px;background:transparent;color:var(--text-secondary);cursor:pointer;touch-action:manipulation;transition:color .15s,background .15s,transform .15s}.topbar__notif-action svg,.topbar__notif-item-delete svg,.topbar__notif-retry svg,.topbar__notif-state-icon svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.topbar__notif-action--read{color:var(--biolum)}.topbar__notif-action--delete{color:var(--text-muted)}.topbar__notif-action:hover{background:var(--wave-dim);color:var(--wave)}.topbar__notif-action--delete:hover{background:var(--danger-dim);color:var(--danger)}.topbar__notif-action:active,.topbar__notif-item-delete:active{transform:scale(.92)}.topbar__notif-action:disabled{opacity:.3;cursor:default;transform:none}.topbar__notif-confirm{min-height:54px;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 12px 8px 16px;color:var(--text-secondary);font-size:.8rem;background:var(--danger-dim);border-bottom:1px solid color-mix(in srgb,var(--danger) 22%,transparent)}.topbar__notif-confirm>div{display:flex;gap:6px}.topbar__notif-confirm button{min-height:36px;padding:0 11px;border:0;border-radius:10px;font:600 .75rem var(--font-body);cursor:pointer}.topbar__notif-confirm-cancel{background:var(--card-bg-hover);color:var(--text-secondary)}.topbar__notif-confirm-delete{background:var(--danger);color:#fff}.topbar__notif-body{min-height:120px;overflow-y:auto;overscroll-behavior:contain;scrollbar-gutter:stable;font-size:.82rem;background:var(--notif-item-surface)}.topbar__notif-item{--notif-accent: var(--wave);position:relative;display:flex;align-items:flex-start;gap:12px;min-height:88px;padding:13px 48px 13px 14px;border-bottom:1px solid var(--border);cursor:pointer;background:var(--notif-item-surface);touch-action:pan-y;transform:translate(var(--swipe-x, 0));transition:background var(--transition),transform .18s ease;z-index:1}.topbar__notif-item:before{content:"";position:absolute;left:0;top:14px;bottom:14px;width:3px;border-radius:0 3px 3px 0;background:transparent}.topbar__notif-item--unread{background:var(--notif-unread-surface);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--notif-accent) 13%,transparent)}.topbar__notif-item--unread:before{width:4px;background:var(--notif-accent);box-shadow:0 0 10px color-mix(in srgb,var(--notif-accent) 55%,transparent)}.topbar__notif-item:hover{background:var(--notif-hover-surface)}.topbar__notif-item[data-swiping=false]:active{transform:scale(.992)}.topbar__notif-item[data-dragging=true]{transition:none}.topbar__notif-swipe-wrap{position:relative;overflow:hidden;background:linear-gradient(90deg,var(--danger),color-mix(in srgb,var(--danger) 75%,var(--ocean-dark)))}.topbar__notif-swipe-wrap--exiting{height:var(--notif-row-height);pointer-events:none;animation:notif-row-collapse .42s cubic-bezier(.22,1,.36,1) .2s forwards}.topbar__notif-swipe-wrap--exiting .topbar__notif-item{animation:notif-item-dismiss .26s cubic-bezier(.4,0,1,1) forwards}.topbar__notif-swipe-wrap--swipe-exit .topbar__notif-item{animation-name:notif-item-swipe-dismiss}.topbar__notif-swipe-delete{position:absolute;inset:0 auto 0 0;width:112px;display:flex;align-items:center;justify-content:center;gap:7px;color:#fff;font-size:.76rem;font-weight:650}.topbar__notif-swipe-delete svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}.topbar__notif-item-icon{width:42px;height:42px;display:flex;align-items:center;justify-content:center;flex-shrink:0;border-radius:13px;background:color-mix(in srgb,var(--notif-accent) 13%,transparent);border:1px solid color-mix(in srgb,var(--notif-accent) 18%,transparent)}.topbar__notif-item-icon img{display:block}.topbar__notif-item-delete{position:absolute;top:10px;right:6px;color:var(--text-muted)}.topbar__notif-item-delete:hover{background:var(--danger-dim);color:var(--danger)}.topbar__notif-item:last-child{border-bottom:none}.topbar__notif-loading-more{padding:14px;text-align:center;color:var(--text-muted);font-size:.78rem}.topbar__notif-item-content{flex:1;min-width:0}.topbar__notif-item-text{color:var(--text-primary);display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:3;font-size:.83rem;line-height:1.38;margin-bottom:6px;word-break:break-word}.topbar__notif-item-caption{margin:0 0 3px;color:var(--notif-accent);font-size:.69rem;font-weight:650;letter-spacing:.015em}.topbar__notif-item-kicker{min-height:17px;display:flex;align-items:center;gap:7px;margin-bottom:2px}.topbar__notif-item-kicker .topbar__notif-item-caption{margin:0}.topbar__notif-unread-label{flex-shrink:0;padding:2px 6px;border-radius:999px;background:var(--notif-accent);color:#06131f;font-size:.58rem;font-weight:750;line-height:1.25;letter-spacing:.045em;text-transform:uppercase}.topbar__notif-item--unread .topbar__notif-item-text{font-weight:550}.topbar__notif-item-meta{display:flex;align-items:center;flex-wrap:wrap;gap:5px;font-size:.72rem;color:var(--text-muted)}.topbar__notif-item-meta span{color:var(--text-secondary)}.topbar__notif-item-meta span:after{content:"·";margin-left:5px;color:var(--text-muted)}.topbar__notif-state{min-height:230px;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:28px 22px;text-align:center}.topbar__notif-state-icon{width:48px;height:48px;display:grid;place-items:center;margin-bottom:12px;border-radius:16px;background:var(--wave-dim);color:var(--wave)}.topbar__notif-state strong{color:var(--text-primary);font-size:.92rem}.topbar__notif-state p{max-width:260px;margin:5px 0 15px;color:var(--text-muted);line-height:1.4}.topbar__notif-state--error .topbar__notif-state-icon{background:var(--danger-dim);color:var(--danger)}.topbar__notif-retry{min-height:40px;display:inline-flex;align-items:center;gap:7px;padding:0 14px;border:0;border-radius:12px;background:var(--wave-dim);color:var(--wave);font:600 .8rem var(--font-body);cursor:pointer}.topbar__notif-retry svg{width:17px;height:17px}.topbar__notif-skeletons{padding:8px 14px}.topbar__notif-skeleton{display:flex;gap:12px;padding:10px 0}.topbar__notif-skeleton>span,.topbar__notif-skeleton i{display:block;border-radius:9px;background:linear-gradient(90deg,var(--ocean-dark),var(--ocean-mid),var(--ocean-dark));background-size:200% 100%;animation:skeleton-pulse 1.4s ease-in-out infinite}.topbar__notif-skeleton>span{width:42px;height:42px;flex-shrink:0;border-radius:13px}.topbar__notif-skeleton>div{flex:1;padding-top:3px}.topbar__notif-skeleton i:first-child{width:72%;height:11px;margin-bottom:9px}.topbar__notif-skeleton i:last-child{width:42%;height:9px}@keyframes notif-panel-in{0%{opacity:0;transform:translateY(-8px) scale(.985)}to{opacity:1;transform:none}}@keyframes notif-item-swipe-dismiss{0%{transform:translate(var(--swipe-x, 0));opacity:1}to{transform:translate(115%);opacity:.35}}@keyframes notif-item-dismiss{0%{transform:translate(0);opacity:1}to{transform:translate(35%);opacity:0}}@keyframes notif-row-collapse{0%{height:var(--notif-row-height);opacity:1}to{height:0;opacity:0}}[data-theme=light] .topbar{background:#f0f6faf2}[data-theme=light] .topbar__notif-header{background:var(--notif-surface)}[data-theme=light] .card.topbar__notif-panel{--notif-surface: #ffffff;--notif-item-surface: #f8fbfd;--notif-unread-surface: #eaf5fa;--notif-hover-surface: #e2f0f6}.topbar__notif-action:focus-visible,.topbar__notif-item:focus-visible,.topbar__notif-item-delete:focus-visible,.topbar__notif-confirm button:focus-visible,.topbar__notif-retry:focus-visible{outline:2px solid var(--wave);outline-offset:2px}[data-theme=light] .btn-ghost{border-color:var(--border)}[data-theme=light] .btn-ghost:hover{background:var(--wave-dim)}[data-theme=light] .topbar__user-btn-ring rect{stroke:#f9a825;filter:drop-shadow(0 0 4px rgba(249,168,37,.9)) drop-shadow(0 0 10px rgba(245,124,0,.5))}@media (max-width: 480px){.topbar__title-text{display:none}.card.topbar__notif-panel{top:calc(56px + env(safe-area-inset-top,0px));left:8px;right:8px;width:auto;max-height:calc(100dvh - 64px - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px));border-radius:18px}.topbar__notif-header{min-height:60px;padding-left:14px}.topbar__notif-title{font-size:.96rem}.topbar__notif-header-actions{gap:0}.topbar__notif-item{min-height:92px;padding-top:14px;padding-bottom:14px}.topbar__notif-confirm{flex-wrap:wrap}.topbar__notif-body{padding-bottom:max(6px,env(safe-area-inset-bottom,0px))}.topbar__user-panel{top:56px;left:8px;right:8px;width:auto}}@media (max-width: 380px){.topbar__user-btn{display:none}.topbar__notif-title{font-size:.9rem}.topbar__notif-count{min-width:22px;height:22px;line-height:22px}.topbar__notif-action{width:38px;height:40px}.topbar__notif-item{gap:10px;padding-left:11px}.topbar__notif-item-icon{width:40px;height:40px}}@media (prefers-reduced-motion: reduce){.card.topbar__notif-panel,.topbar__notif-skeleton>span,.topbar__notif-skeleton i,.topbar__notif-swipe-wrap--exiting,.topbar__notif-swipe-wrap--exiting .topbar__notif-item{animation:none}}@keyframes admin-ring-sweep{0%{stroke-dashoffset:0;opacity:0}8%{opacity:.6}35%{stroke-dashoffset:-100;opacity:.6}42%{opacity:0}to{stroke-dashoffset:-100;opacity:0}}.bottom-nav{position:fixed;bottom:0;left:0;right:0;display:flex;background:#0a1628f2;border-top:1px solid var(--border);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);z-index:100;padding-bottom:env(safe-area-inset-bottom)}.bottom-nav__indicator{position:absolute;top:4px;bottom:4px;left:0;width:calc(100% / var(--nav-items));background:var(--biolum-dim);border-radius:var(--radius-sm);transition:transform .3s cubic-bezier(.4,0,.2,1);z-index:0;pointer-events:none}.bottom-nav__item{flex:1;position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:8px 4px;text-decoration:none;color:var(--text-muted);transition:color .2s;gap:2px}.bottom-nav__item.active{color:var(--biolum)}.bottom-nav__icon{display:flex;align-items:center;justify-content:center;height:1.5rem;width:100%}.bottom-nav__icon img{display:block;max-width:100%;max-height:100%;transition:filter .2s,transform .2s cubic-bezier(.175,.885,.32,1.275)}.bottom-nav__item.active .bottom-nav__icon img{filter:drop-shadow(0 0 5px var(--biolum-glow));transform:scale(1.1)}.bottom-nav__item:active{transform:scale(.95);transition:transform .1s}.bottom-nav__label{font-size:.68rem;font-weight:500;letter-spacing:.03em}[data-theme=light] .bottom-nav{background:#fffffff2}:root{--ocean-deep: #020c1b;--ocean-dark: #0a1628;--ocean-mid: #112240;--ocean-surface: #1a3a5c;--ocean-shallow: #233d5e;--biolum: #00d4aa;--biolum-dim: rgba(0, 212, 170, .15);--biolum-glow: rgba(0, 212, 170, .4);--wave: #4fc3f7;--wave-dim: rgba(79, 195, 247, .2);--danger: #ff5252;--danger-dim: rgba(255, 82, 82, .15);--warn: #ffb74d;--warn-dim: rgba(255, 183, 77, .15);--success: #69f0ae;--text-primary: #e8f4f8;--text-secondary:#7fb3cc;--text-muted: #4a7a95;--border: rgba(79, 195, 247, .12);--border-glow: rgba(0, 212, 170, .35);--card-bg: rgba(17, 34, 64, .85);--card-bg-hover: rgba(26, 58, 92, .9);--radius-sm: 6px;--radius: 12px;--radius-lg: 20px;--font-mono: ui-monospace, "SFMono-Regular", Consolas, "Liberation Mono", monospace;--font-body: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--shadow-card: 0 4px 24px rgba(0,0,0,.4), 0 1px 0 rgba(79,195,247,.08);--shadow-glow: 0 0 20px rgba(0, 212, 170, .25);--transition: .2s cubic-bezier(.4, 0, .2, 1);--chart-bg: #0b1622;--chart-grid: rgba(79,195,247,.07);--chart-overlay: rgba(11,22,34,.4);--chart-crosshair: rgba(255,255,255,.45);--chart-crosshair-ring: rgba(255,255,255,.6);--chart-tooltip-bg: rgba(10,22,40,.96);--chart-tooltip-border: rgba(79,195,247,.3);--chart-tooltip-shadow: 0 4px 20px rgba(0,0,0,.6)}[data-theme=light]{--ocean-deep: #f0f6fa;--ocean-dark: #e0ecf4;--ocean-mid: #c8dce8;--ocean-surface: #a8c4d8;--ocean-shallow: #8db0c8;--biolum: #009988;--biolum-dim: rgba(0, 153, 136, .12);--biolum-glow: rgba(0, 153, 136, .3);--wave: #0288d1;--wave-dim: rgba(2, 136, 209, .1);--danger: #d32f2f;--danger-dim: rgba(211, 47, 47, .1);--warn: #f57c00;--warn-dim: rgba(245, 124, 0, .1);--success: #2e7d32;--text-primary: #1a2a3a;--text-secondary:#4a6274;--text-muted: #7a90a0;--border: rgba(2, 136, 209, .15);--border-glow: rgba(0, 153, 136, .3);--card-bg: rgba(255, 255, 255, .9);--card-bg-hover: rgba(240, 246, 250, .95);--shadow-card: 0 2px 12px rgba(0,0,0,.08), 0 1px 0 rgba(2,136,209,.06);--shadow-glow: 0 0 16px rgba(0, 153, 136, .15);--chart-bg: #f5f9fc;--chart-grid: rgba(2,136,209,.06);--chart-overlay: rgba(200,220,232,.35);--chart-crosshair: rgba(26,42,58,.5);--chart-crosshair-ring: rgba(26,42,58,.65);--chart-tooltip-bg: rgba(240,246,250,.97);--chart-tooltip-border: rgba(2,136,209,.25);--chart-tooltip-shadow: 0 2px 12px rgba(0,0,0,.12)}[data-theme=light] body{background-color:var(--ocean-deep)}[data-theme=light] body:before{background:radial-gradient(ellipse 80% 50% at 20% 20%,rgba(0,153,136,.04) 0%,transparent 60%),radial-gradient(ellipse 60% 80% at 80% 80%,rgba(2,136,209,.03) 0%,transparent 60%),linear-gradient(135deg,#f0f6fa,#e0ecf4,#e8f0f6)}[data-theme=light] .input{background:#ffffffe6}.route-loading{min-height:min(55vh,440px);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;color:var(--text-muted)}.route-loading__wave{font-size:2.5rem;animation:route-wave 1.5s ease-in-out infinite}.route-loading__bar{width:120px;height:4px;border-radius:2px}@keyframes route-wave{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}[data-theme=light] .skeleton{background:linear-gradient(90deg,var(--ocean-dark) 0%,var(--ocean-mid) 50%,var(--ocean-dark) 100%);background-size:200% 100%}[data-theme=light] ::-webkit-scrollbar-track{background:var(--ocean-dark)}[data-theme=light] ::-webkit-scrollbar-thumb{background:var(--ocean-surface)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{height:100%;scroll-behavior:smooth;overflow-x:hidden}body{font-family:var(--font-body);background-color:var(--ocean-deep);color:var(--text-primary);min-height:100%;line-height:1.6;-webkit-font-smoothing:antialiased;overflow-x:hidden}body:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;background:radial-gradient(ellipse 80% 50% at 20% 20%,rgba(0,212,170,.06) 0%,transparent 60%),radial-gradient(ellipse 60% 80% at 80% 80%,rgba(79,195,247,.05) 0%,transparent 60%),linear-gradient(135deg,#020c1b,#0a1628,#071526);pointer-events:none;z-index:0}#root{position:relative;z-index:1;min-height:100vh}h1,h2,h3,h4{font-weight:600;line-height:1.3}h1{font-size:clamp(1.6rem,4vw,2.4rem)}h2{font-size:clamp(1.2rem,3vw,1.8rem)}h3{font-size:1.1rem}.mono{font-family:var(--font-mono)}.app-layout{display:flex;flex-direction:column;position:fixed;top:0;right:0;bottom:0;left:0;overflow:hidden}.page-scroll{flex:1;overflow-y:auto;overflow-x:hidden;width:100%;margin-top:60px;margin-bottom:56px;padding-bottom:10px}.page-scroll>*{max-width:1200px;margin-left:auto;margin-right:auto}.card{background:var(--card-bg);border:1px solid var(--border);border-radius:var(--radius);padding:20px;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);box-shadow:var(--shadow-card);transition:border-color var(--transition),box-shadow var(--transition)}.card:hover{border-color:#4fc3f733}.card-glow{border-color:var(--border-glow);box-shadow:var(--shadow-card),var(--shadow-glow)}.btn{display:inline-flex;align-items:center;gap:8px;padding:10px 20px;border-radius:var(--radius-sm);font-family:var(--font-body);font-size:.9rem;font-weight:500;border:none;cursor:pointer;transition:all var(--transition);text-decoration:none;white-space:nowrap}.btn-primary{background:var(--biolum);color:var(--ocean-deep)}.btn-primary:hover{background:#00ebbf;box-shadow:0 0 16px #00d4aa73;transform:translateY(-1px)}.btn-primary:active{transform:translateY(0)}.btn-ghost{background:transparent;color:var(--text-secondary);border:1px solid var(--border)}.btn-ghost:hover{color:var(--text-primary);border-color:#4fc3f74d;background:var(--wave-dim)}.btn-danger{background:var(--danger-dim);color:var(--danger);border:1px solid rgba(255,82,82,.3)}.btn-danger:hover{background:#ff525240}.btn-sm{padding:6px 14px;font-size:.82rem}.btn-icon{padding:8px;border-radius:var(--radius-sm);aspect-ratio:1}.input-group{display:flex;flex-direction:column;gap:6px}.input-label{font-size:.82rem;font-weight:500;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.06em}.input{background:#0a1628cc;border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-primary);font-family:var(--font-body);font-size:.95rem;padding:11px 14px;width:100%;transition:border-color var(--transition),box-shadow var(--transition);outline:none}.input:focus{border-color:var(--biolum);box-shadow:0 0 0 3px var(--biolum-dim)}.input::placeholder{color:var(--text-muted)}.input::-webkit-calendar-picker-indicator{filter:invert(.6)}.input:disabled,select.input:disabled{background:#ffffff0a;border-color:#ffffff14;color:#ffffff4d;cursor:not-allowed;opacity:.5}.badge{display:inline-flex;align-items:center;gap:5px;padding:3px 10px;border-radius:20px;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em}.badge-online{background:#69f0ae1f;color:var(--success);border:1px solid rgba(105,240,174,.25)}.badge-offline{background:var(--danger-dim);color:var(--danger);border:1px solid rgba(255,82,82,.25)}.badge-warn{background:var(--warn-dim);color:var(--warn);border:1px solid rgba(255,183,77,.25)}.badge-wave{background:var(--wave-dim);color:var(--wave);border:1px solid rgba(79,195,247,.25)}.badge-user{background:#9e9e9e1f;color:var(--text-muted);border:1px solid rgba(158,158,158,.25)}.badge:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor;flex-shrink:0}.data-table{width:100%;border-collapse:collapse;font-size:.88rem}.data-table th{padding:10px 14px;text-align:left;font-family:var(--font-mono);font-size:.72rem;font-weight:700;color:var(--text-muted);border-bottom:1px solid var(--border);white-space:nowrap}.data-table td{padding:12px 14px;border-bottom:1px solid rgba(79,195,247,.06);color:var(--text-secondary);vertical-align:middle}.data-table tr:hover td{background:#4fc3f70a;color:var(--text-primary)}.data-table tr:last-child td{border-bottom:none}.data-table td.value-primary{font-family:var(--font-mono);color:var(--biolum);font-weight:700}.data-table td.value-danger{font-family:var(--font-mono);color:var(--danger);font-weight:700}.data-table td.value-warn{font-family:var(--font-mono);color:var(--warn);font-weight:700}.skeleton{background:linear-gradient(90deg,var(--ocean-mid) 0%,var(--ocean-surface) 50%,var(--ocean-mid) 100%);background-size:200% 100%;animation:shimmer 1.6s infinite;border-radius:var(--radius-sm)}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.flex{display:flex}.flex-col{display:flex;flex-direction:column}.items-center{align-items:center}.justify-between{justify-content:space-between}.gap-2{gap:8px}.gap-3{gap:12px}.gap-4{gap:16px}.mt-2{margin-top:8px}.mt-4{margin-top:16px}.mt-6{margin-top:24px}.w-full{width:100%}.text-muted{color:var(--text-muted);font-size:.85rem}.text-danger{color:var(--danger)}.text-success{color:var(--success)}.text-warn{color:var(--warn)}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:var(--ocean-dark)}::-webkit-scrollbar-thumb{background:var(--ocean-surface);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}.pagination{display:flex;align-items:center;gap:8px;justify-content:center;margin-top:20px;flex-wrap:wrap}.pagination .btn{min-width:38px;justify-content:center}.pagination .btn.active{background:var(--biolum);color:var(--ocean-deep)}.event-icon{display:inline-flex;align-items:center;justify-content:center;vertical-align:middle;flex-shrink:0}.event-icon svg{display:block}.empty-state{text-align:center;padding:60px 20px;color:var(--text-muted)}.empty-state .icon{font-size:3rem;margin-bottom:16px;opacity:.5}.empty-state p{font-size:.9rem}.toggle{position:relative;width:46px;height:26px;background:var(--ocean-surface);border:1px solid var(--border);border-radius:13px;cursor:pointer;transition:background .2s,border-color .2s;padding:0;flex-shrink:0;outline:none}.toggle:hover{border-color:#4fc3f74d}.toggle--on{background:var(--biolum);border-color:var(--biolum)}.toggle--saving{opacity:.6;cursor:wait}.toggle:after{content:"";position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:50%;background:#fff;transition:transform .2s cubic-bezier(.4,0,.2,1);box-shadow:0 1px 3px #00000040}.toggle--on:after{transform:translate(20px)}.alert{padding:12px 16px;border-radius:var(--radius-sm);font-size:.88rem;margin-bottom:16px}.alert-error{background:var(--danger-dim);color:var(--danger);border:1px solid rgba(255,82,82,.3)}.alert-success{background:#69f0ae1a;color:var(--success);border:1px solid rgba(105,240,174,.25)}.alert-warn{background:var(--warn-dim);color:var(--warn);border:1px solid rgba(255,183,77,.3)}@media (max-width: 640px){.page-content{padding:16px 14px 90px}.card{padding:16px}.hide-mobile{display:none!important}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}.fade-in{animation:fadeInUp .4s ease forwards}.fade-in-delay-1{animation-delay:.08s;opacity:0}.fade-in-delay-2{animation-delay:.16s;opacity:0}.fade-in-delay-3{animation-delay:.24s;opacity:0}.scroll-top-btn{position:fixed;bottom:72px;right:16px;width:40px;height:40px;border-radius:50%;background:var(--biolum);color:var(--ocean-deep);border:none;font-size:1.2rem;font-weight:700;cursor:pointer;z-index:50;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 12px #0006,0 0 12px var(--biolum-glow);transition:transform .2s,box-shadow .2s;animation:fadeInUp .3s ease forwards}.scroll-top-btn:hover{transform:translateY(-2px);box-shadow:0 4px 16px #00000080,0 0 20px var(--biolum-glow)}.filter-bar-wrapper{position:relative}.filter-bar{display:flex;align-items:center;gap:6px;flex-wrap:wrap;padding:6px 10px;margin-bottom:8px;background:var(--card-bg);border:1px solid var(--border);border-radius:var(--radius-sm)}.filter-bar__dates{display:flex;gap:3px;flex-wrap:wrap}.bar-chip{padding:4px 11px;border-radius:12px;font-size:.78rem;border:1px solid var(--border);background:transparent;color:var(--text-muted);font-family:var(--font-body);cursor:pointer;transition:all .15s;white-space:nowrap}.bar-chip.active{border-color:var(--biolum);color:var(--biolum);background:var(--biolum-dim)}.bar-chip:hover:not(.active):not(:disabled){color:var(--text-primary);border-color:#4fc3f74d}.bar-chip:disabled{opacity:.5;cursor:not-allowed}.bar-action{font-size:.78rem}.sheet-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;z-index:100}.filter-sheet{position:fixed;bottom:0;left:0;right:0;background:var(--card-bg);border-radius:14px 14px 0 0;padding:10px 14px 20px;z-index:101;max-height:70vh;overflow-y:auto;box-shadow:0 -4px 24px #00000080}@media (min-width: 768px){.filter-sheet{position:absolute;bottom:auto;top:100%;left:50%;right:auto;transform:translate(-50%);border-radius:8px;max-height:60vh;min-width:300px;max-width:500px;box-shadow:0 4px 20px #00000080}.filter-sheet--centered{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);bottom:auto;right:auto;border-radius:10px;max-height:70vh;min-width:320px;max-width:500px;box-shadow:0 8px 32px #0009}}.sheet-handle{width:36px;height:4px;border-radius:2px;background:var(--text-muted);opacity:.35;margin:0 auto 8px}.sheet-title{font-size:.85rem;font-weight:600;color:var(--text-secondary);margin-bottom:8px}.sheet-buttons{display:flex;justify-content:center;gap:10px;margin-top:14px;padding-top:10px;border-top:1px solid var(--border)}@media (max-width: 767px){.bar-chip{padding:3px 8px;font-size:.74rem}}@media (max-width: 479px){.bar-chip{padding:3px 7px;font-size:.7rem}.bar-action{font-size:.74rem}}
