/*!
 * JSG WebStyle v1.3.0 — 简约精致的原生 UI 样式库
 * 零依赖 · 亮/暗主题 · 响应式
 * 用法：<link rel="stylesheet" href="jsg.css"> + <script src="jsg.js"></script>
 */:root{--bg:#f7f7f8;--surface:#ffffff;--surface-2:#f2f2f4;--surface-3:#e9e9ed;--border:#e6e6ea;--border-strong:#d4d4da;--text:#18181b;--text-2:#52525b;--text-3:#a1a1aa;--on-primary:#ffffff;--primary:#2f6bff;--primary-h:#1f5af0;--primary-soft:rgba(47,107,255,.1);--accent:#8b5cf6;--success:#16a34a;--success-soft:rgba(22,163,74,.1);--warning:#d97706;--warning-soft:rgba(217,119,6,.12);--danger:#dc2626;--danger-soft:rgba(220,38,38,.1);--c1:#2f6bff;--c2:#0d9488;--c3:#d97706;--c4:#9333ea;--radius-xs:5px;--radius-sm:7px;--radius:10px;--radius-lg:14px;--radius-xl:20px;--radius-full:999px;--shadow-sm:0 1px 2px rgba(16,16,20,.05);--shadow:0 4px 16px -4px rgba(16,16,20,.1),0 1px 3px rgba(16,16,20,.06);--shadow-lg:0 24px 48px -12px rgba(16,16,20,.22);--ring:0 0 0 3px var(--primary-soft);--s1:4px;--s2:8px;--s3:12px;--s4:16px;--s5:20px;--s6:24px;--s8:32px;--s10:40px;--s12:48px;--s16:64px;--s20:80px;--font:-apple-system,BlinkMacSystemFont,"SF Pro Text","PingFang SC","Hiragino Sans GB","Microsoft YaHei","Segoe UI",Roboto,sans-serif;--mono:"SF Mono",ui-monospace,Menlo,Consolas,"Liberation Mono",monospace;--container:1180px;--navbar-h:60px;--sidebar-w:240px;--ease:cubic-bezier(.2,.8,.2,1);--dur:.2s;color-scheme:light}[data-theme=dark]{--bg:#0e0e11;--surface:#17171b;--surface-2:#1f1f24;--surface-3:#28282e;--border:#2a2a31;--border-strong:#3a3a43;--text:#f4f4f5;--text-2:#a1a1aa;--text-3:#6b6b74;--primary:#5b8cff;--primary-h:#7aa2ff;--primary-soft:rgba(91,140,255,.16);--accent:#a78bfa;--success:#22c55e;--success-soft:rgba(34,197,94,.14);--warning:#f59e0b;--warning-soft:rgba(245,158,11,.14);--danger:#f87171;--danger-soft:rgba(248,113,113,.14);--c1:#5b8cff;--c2:#0f9f90;--c3:#c87a0c;--c4:#a96cf0;--shadow-sm:0 1px 2px rgba(0,0,0,.3);--shadow:0 4px 16px -4px rgba(0,0,0,.5),0 1px 3px rgba(0,0,0,.4);--shadow-lg:0 24px 48px -12px rgba(0,0,0,.6);color-scheme:dark}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}body{margin:0;overflow-x:clip;font:14px/1.6 var(--font);color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;transition:background .3s var(--ease),color .3s var(--ease)}h1,h2,h3,h4,h5,h6,p,figure,blockquote{margin:0}h1,h2,h3,h4{font-weight:600;letter-spacing:-.015em;line-height:1.3}img,svg,video{display:block;max-width:100%}img[data-placeholder]{height:auto}button,input,select,textarea{font:inherit;color:inherit}a{color:var(--primary);text-decoration:none}a:hover{text-decoration:underline;text-underline-offset:3px}code,kbd,pre{font-family:var(--mono)}:not(pre)>code{font-size:.88em;padding:.12em .4em;border-radius:var(--radius-xs);background:var(--surface-2);border:1px solid var(--border)}hr{border:0;height:1px;background:var(--border);margin:var(--s6) 0}:focus-visible{outline:none}a:focus-visible,[tabindex]:focus-visible,summary:focus-visible{outline:2px solid var(--primary);outline-offset:2px;border-radius:4px}.card:focus-visible{outline-offset:3px;border-radius:var(--radius-lg)}::selection{background:var(--primary-soft)}[hidden]{display:none!important}.icon{width:16px;height:16px;flex:none;display:inline-block;vertical-align:-3px}.display{font-size:clamp(36px,6vw,60px);font-weight:700;letter-spacing:-.035em;line-height:1.08}.h1{font-size:clamp(28px,4vw,36px);font-weight:650;letter-spacing:-.025em;line-height:1.2}.h2{font-size:24px;font-weight:600;letter-spacing:-.02em}.h3{font-size:18px;font-weight:600}.h4{font-size:15px;font-weight:600}.lead{font-size:17px;color:var(--text-2);line-height:1.65}.eyebrow{font-size:12px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--primary)}.text-sm{font-size:13px}.text-xs{font-size:12px}.text-lg{font-size:16px}.text-muted{color:var(--text-2)}.text-faint{color:var(--text-3)}.text-primary{color:var(--primary)}.text-success{color:var(--success)}.text-warning{color:var(--warning)}.text-danger{color:var(--danger)}.text-center{text-align:center}.text-right{text-align:right}.font-medium{font-weight:500}.font-semibold{font-weight:600}.font-mono{font-family:var(--mono)}.tabular{font-variant-numeric:tabular-nums}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gradient-text{background:linear-gradient(120deg,var(--primary),var(--accent));-webkit-background-clip:text;background-clip:text;color:transparent}.prose{font-size:16px;line-height:1.8;color:var(--text);max-width:720px}.prose>*+*{margin-top:1.1em}.prose h1{font-size:32px;letter-spacing:-.025em;line-height:1.25}.prose h2{font-size:23px;margin-top:2em}.prose h3{font-size:18px;margin-top:1.6em}.prose p,.prose li{color:color-mix(in srgb,var(--text) 86%,var(--bg))}.prose ul,.prose ol{padding-left:1.4em}.prose li+li{margin-top:.35em}.prose li::marker{color:var(--text-3)}.prose blockquote{padding:.2em 0 .2em 1.1em;border-left:3px solid var(--primary);color:var(--text-2);font-style:italic}.prose img{border-radius:var(--radius-lg);border:1px solid var(--border)}.prose figcaption{font-size:13px;color:var(--text-3);text-align:center;margin-top:8px}.prose a{text-decoration:underline;text-decoration-color:color-mix(in srgb,var(--primary) 40%,transparent);text-underline-offset:3px}.prose hr{margin:2.4em 0}.prose pre{font-size:13.5px}.container{width:100%;max-width:var(--container);margin:0 auto;padding:0 var(--s6)}.container-sm{max-width:760px}.container-lg{max-width:1360px}.section{padding:var(--s20) 0}.section-sm{padding:var(--s12) 0}.section-head{max-width:640px;margin:0 auto var(--s12);text-align:center}.section-head .lead{margin-top:var(--s3)}.row{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s3)}.row-nowrap{flex-wrap:nowrap}.stack{display:flex;flex-direction:column;gap:var(--s4)}.between{justify-content:space-between}.center{justify-content:center;align-items:center}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.spacer{flex:1}.grid{display:grid;gap:var(--s4)}.cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.cols-auto{grid-template-columns:repeat(auto-fill,minmax(240px,1fr))}.span-2{grid-column:span 2}.span-full{grid-column:1/-1}.gap-1{gap:var(--s1)}.gap-2{gap:var(--s2)}.gap-3{gap:var(--s3)}.gap-4{gap:var(--s4)}.gap-6{gap:var(--s6)}.gap-8{gap:var(--s8)}.mt-1{margin-top:var(--s1)}.mt-2{margin-top:var(--s2)}.mt-3{margin-top:var(--s3)}.mt-4{margin-top:var(--s4)}.mt-6{margin-top:var(--s6)}.mt-8{margin-top:var(--s8)}.mt-12{margin-top:var(--s12)}.mb-2{margin-bottom:var(--s2)}.mb-4{margin-bottom:var(--s4)}.mb-6{margin-bottom:var(--s6)}.mb-8{margin-bottom:var(--s8)}.p-4{padding:var(--s4)}.p-6{padding:var(--s6)}.w-full{width:100%}.mx-auto{margin-left:auto;margin-right:auto}.relative{position:relative}.surface{background:var(--surface)}.surface-2{background:var(--surface-2)}.rounded{border-radius:var(--radius)}.rounded-lg{border-radius:var(--radius-lg)}.border{border:1px solid var(--border)}.shadow{box-shadow:var(--shadow)}@media (max-width:1024px){.cols-4{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:768px){.container{padding:0 var(--s4)}.section{padding:var(--s12) 0}.cols-2,.cols-3,.cols-4{grid-template-columns:1fr}.span-2{grid-column:auto}.hide-mobile{display:none!important}}@media (min-width:769px){.show-mobile{display:none!important}}.navbar{position:sticky;top:0;z-index:60;height:var(--navbar-h);background:color-mix(in srgb,var(--bg) 82%,transparent);backdrop-filter:saturate(1.6) blur(14px);-webkit-backdrop-filter:saturate(1.6) blur(14px);border-bottom:1px solid var(--border)}.navbar.transparent{background:transparent;border-color:transparent;backdrop-filter:none}.navbar.scrolled{background:color-mix(in srgb,var(--bg) 82%,transparent);border-color:var(--border);backdrop-filter:saturate(1.6) blur(14px)}.navbar-inner{height:100%;display:flex;align-items:center;gap:var(--s6)}.brand{display:inline-flex;align-items:center;gap:10px;font-weight:650;font-size:15px;letter-spacing:-.01em;color:var(--text)}.brand:hover{text-decoration:none}.brand-mark{width:28px;height:28px;border-radius:8px;background:linear-gradient(135deg,var(--primary),var(--accent));display:grid;place-items:center;color:#fff;font-size:13px;font-weight:700;box-shadow:inset 0 1px #ffffff40}.navbar-links{display:flex;align-items:center;gap:2px}.navbar-links a{padding:6px 12px;border-radius:var(--radius-sm);color:var(--text-2);font-size:14px;transition:color .15s,background .15s}.navbar-links a:hover{color:var(--text);background:var(--surface-2);text-decoration:none}.navbar-links a.active{color:var(--text);font-weight:500}.navbar-actions{margin-left:auto;display:flex;align-items:center;gap:var(--s2)}.navbar .navbar-toggle{display:none}@media (max-width:768px){.navbar .navbar-toggle{display:inline-flex}.navbar-links{position:absolute;top:var(--navbar-h);left:0;right:0;flex-direction:column;align-items:stretch;gap:2px;padding:var(--s3) var(--s4) var(--s4);background:var(--surface);border-bottom:1px solid var(--border);box-shadow:var(--shadow);opacity:0;visibility:hidden;transform:translateY(-6px);transition:opacity .2s,transform .2s var(--ease),visibility .2s}.navbar-links a{padding:10px 12px;font-size:15px}.navbar.open .navbar-links{opacity:1;visibility:visible;transform:none}}.app{display:grid;grid-template-columns:var(--sidebar-w) minmax(0,1fr);min-height:100vh}.sidebar{position:sticky;top:0;height:100vh;display:flex;flex-direction:column;background:var(--surface);border-right:1px solid var(--border);padding:var(--s4) var(--s3);overflow-y:auto;z-index:70}.sidebar .brand{padding:4px 8px 16px}.sidebar-title{font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--text-3);padding:16px 10px 6px}.sidebar-nav{display:flex;flex-direction:column;gap:2px}.sidebar-nav a{display:flex;align-items:center;gap:10px;padding:7px 10px;border-radius:var(--radius-sm);color:var(--text-2);font-size:13.5px;transition:background .15s,color .15s}.sidebar-nav a:hover{background:var(--surface-2);color:var(--text);text-decoration:none}.sidebar-nav a.active{background:var(--primary-soft);color:var(--primary);font-weight:500}.sidebar-nav a .icon{color:currentColor;opacity:.85}.sidebar-nav a .badge{margin-left:auto;height:18px;padding:0 6px;font-size:11px}.sidebar-foot{margin-top:auto;padding-top:var(--s3);border-top:1px solid var(--border)}.app-main{display:flex;flex-direction:column;min-width:0}.app-header{position:sticky;top:0;z-index:50;height:var(--navbar-h);display:flex;align-items:center;gap:var(--s3);padding:0 var(--s6);background:color-mix(in srgb,var(--bg) 82%,transparent);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-bottom:1px solid var(--border)}.app-content{padding:var(--s6);flex:1}.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--s4);flex-wrap:wrap;margin-bottom:var(--s6)}.page-head p{color:var(--text-2);margin-top:4px}.app-backdrop,.app .sidebar-toggle{display:none}@media (max-width:960px){.app{grid-template-columns:1fr}.sidebar{position:fixed;left:0;top:0;width:min(280px,84vw);transform:translate(-100%);transition:transform .3s var(--ease);box-shadow:var(--shadow-lg)}.app.sidebar-open .sidebar{transform:none}.app-backdrop{display:block;position:fixed;inset:0;z-index:65;background:#0a0a0e66;opacity:0;visibility:hidden;transition:opacity .2s,visibility .2s}.app.sidebar-open .app-backdrop{opacity:1;visibility:visible}.app .sidebar-toggle{display:inline-flex}.app-header{padding:0 var(--s4)}.app-content{padding:var(--s4)}}.hero{position:relative;padding:var(--s20) 0 var(--s16);text-align:center;overflow:hidden}.hero .lead{max-width:600px;margin:var(--s5) auto 0}.hero-actions{display:flex;flex-wrap:wrap;gap:var(--s3);justify-content:center;margin-top:var(--s8)}.hero-glow{position:absolute;inset:-40% -10% auto;height:560px;z-index:-1;pointer-events:none;background:radial-gradient(closest-side,color-mix(in srgb,var(--primary) 22%,transparent),transparent),radial-gradient(closest-side at 70% 40%,color-mix(in srgb,var(--accent) 18%,transparent),transparent);filter:blur(20px);opacity:.9}.grid-bg{position:absolute;inset:0;z-index:-1;pointer-events:none;background-image:linear-gradient(var(--border) 1px,transparent 1px),linear-gradient(90deg,var(--border) 1px,transparent 1px);background-size:48px 48px;mask-image:radial-gradient(ellipse at top,#000 20%,transparent 70%);-webkit-mask-image:radial-gradient(ellipse at top,#000 20%,transparent 70%);opacity:.6}.footer{border-top:1px solid var(--border);padding:var(--s12) 0 var(--s8);color:var(--text-2);font-size:13.5px}.footer-grid{display:grid;grid-template-columns:2fr repeat(3,1fr);gap:var(--s8)}.footer h4{font-size:13px;color:var(--text);margin-bottom:var(--s3)}.footer ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.footer a{color:var(--text-2)}.footer a:hover{color:var(--text)}.footer-bottom{display:flex;justify-content:space-between;gap:var(--s4);flex-wrap:wrap;margin-top:var(--s10);padding-top:var(--s6);border-top:1px solid var(--border);font-size:12.5px;color:var(--text-3)}@media (max-width:768px){.footer-grid{grid-template-columns:1fr 1fr}.footer-grid>:first-child{grid-column:1/-1}}.btn{--h:36px;display:inline-flex;align-items:center;justify-content:center;gap:6px;height:var(--h);padding:0 14px;border-radius:var(--radius-sm);border:1px solid transparent;font-size:13.5px;font-weight:500;line-height:1;cursor:pointer;user-select:none;white-space:nowrap;text-decoration:none!important;transition:background .15s,border-color .15s,color .15s,box-shadow .15s,transform .08s,filter .15s}.btn:active:not(:disabled){transform:scale(.97)}.btn:focus-visible{box-shadow:var(--ring)}.btn:disabled,.btn.disabled{opacity:.45;cursor:not-allowed;pointer-events:none}.btn .icon,.btn svg{width:15px;height:15px}.btn-primary{background:var(--primary);color:var(--on-primary);box-shadow:0 1px 2px color-mix(in srgb,var(--primary) 30%,transparent),inset 0 1px #ffffff1f}.btn-primary:hover{background:var(--primary-h)}.btn-secondary{background:var(--surface);border-color:var(--border-strong);color:var(--text);box-shadow:var(--shadow-sm)}.btn-secondary:hover{background:var(--surface-2)}.btn-ghost{background:transparent;color:var(--text-2)}.btn-ghost:hover{background:var(--surface-2);color:var(--text)}.btn-soft{background:var(--primary-soft);color:var(--primary)}.btn-soft:hover{background:color-mix(in srgb,var(--primary) 18%,transparent)}.btn-dark{background:var(--text);color:var(--bg)}.btn-dark:hover{filter:brightness(1.15)}.btn-danger{background:var(--danger);color:#fff}.btn-danger:hover{filter:brightness(.92)}.btn-link{background:none;color:var(--primary);padding:0;height:auto}.btn-link:hover{text-decoration:underline!important;text-underline-offset:3px}.btn-sm{--h:30px;padding:0 10px;font-size:12.5px}.btn-lg{--h:44px;padding:0 20px;font-size:15px;border-radius:var(--radius)}.btn-xl{--h:52px;padding:0 26px;font-size:16px;border-radius:var(--radius)}.btn-icon{width:var(--h);padding:0}.btn-block{width:100%}.btn-pill{border-radius:var(--radius-full)}.btn.loading{pointer-events:none;color:transparent!important;position:relative}.btn.loading>*{visibility:hidden}.btn.loading:after{content:"";position:absolute;width:15px;height:15px;border-radius:50%;border:2px solid #fff;border-right-color:transparent;animation:jsg-spin .7s linear infinite}.btn-secondary.loading:after,.btn-ghost.loading:after,.btn-soft.loading:after{border-color:var(--text-2);border-right-color:transparent}.btn-group{display:inline-flex}.btn-group .btn{border-radius:0;margin-left:-1px}.btn-group .btn:first-child{border-radius:var(--radius-sm) 0 0 var(--radius-sm);margin-left:0}.btn-group .btn:last-child{border-radius:0 var(--radius-sm) var(--radius-sm) 0}.btn-group .btn.active{background:var(--surface-2);color:var(--text)}@keyframes jsg-spin{to{transform:rotate(360deg)}}.field{display:flex;flex-direction:column}.label{display:block;font-size:13px;font-weight:500;margin-bottom:6px;color:var(--text)}.label .req{color:var(--danger);margin-left:2px}.hint{font-size:12px;color:var(--text-3);margin-top:6px}.hint.error{color:var(--danger)}.hint.success{color:var(--success)}.input,.textarea,.select-native{width:100%;height:38px;padding:0 12px;background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius-sm);font-size:14px;transition:border-color .15s,box-shadow .15s,background .15s}.input::placeholder,.textarea::placeholder{color:var(--text-3)}.input:hover,.textarea:hover,.select-native:hover{border-color:var(--text-3)}.input:focus,.textarea:focus,.select-native:focus{outline:none;border-color:var(--primary);box-shadow:var(--ring)}.input:disabled,.textarea:disabled{background:var(--surface-2);color:var(--text-3);cursor:not-allowed}.input.is-error,.textarea.is-error{border-color:var(--danger)}.input.is-error:focus{box-shadow:0 0 0 3px var(--danger-soft)}.input.is-success{border-color:var(--success)}.input-sm{height:30px;font-size:13px}.input-lg{height:44px;font-size:15px}.textarea{height:auto;min-height:92px;padding:10px 12px;resize:vertical;line-height:1.55}.select-native{appearance:none;-webkit-appearance:none;padding-right:34px;cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23a1a1aa' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;background-size:16px}input[type=date].input,input[type=time].input{padding-right:8px}.input-wrap{position:relative;display:flex;align-items:center}.input-wrap>.icon{position:absolute;left:11px;color:var(--text-3);pointer-events:none}.input-wrap>.icon~.input{padding-left:34px}.input-wrap>.kbd{position:absolute;right:8px;pointer-events:none}.input-wrap .input-action{position:absolute;right:4px;height:30px;width:30px;border:0;background:none;border-radius:6px;color:var(--text-3);cursor:pointer;display:grid;place-items:center}.input-wrap .input-action:hover{color:var(--text);background:var(--surface-2)}.input-wrap:has(.input-action) .input{padding-right:38px}.input-group{display:flex}.input-group>.addon{display:flex;align-items:center;padding:0 12px;background:var(--surface-2);border:1px solid var(--border-strong);color:var(--text-2);font-size:13px;white-space:nowrap}.input-group>.addon:first-child{border-right:0;border-radius:var(--radius-sm) 0 0 var(--radius-sm)}.input-group>.addon:last-child{border-left:0;border-radius:0 var(--radius-sm) var(--radius-sm) 0}.input-group>.input{border-radius:0;flex:1;min-width:0}.input-group>.input:first-child{border-radius:var(--radius-sm) 0 0 var(--radius-sm)}.input-group>.input:last-child{border-radius:0 var(--radius-sm) var(--radius-sm) 0}.input-group>.btn{border-radius:0 var(--radius-sm) var(--radius-sm) 0;height:38px}.kbd{display:inline-flex;align-items:center;height:20px;padding:0 6px;font:500 11px var(--mono);color:var(--text-2);background:var(--surface-2);border:1px solid var(--border);border-bottom-width:2px;border-radius:5px}.stepper{display:inline-flex;align-items:center;height:38px;border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface);overflow:hidden}.stepper button{width:34px;height:100%;border:0;background:none;color:var(--text-2);cursor:pointer;display:grid;place-items:center;font-size:16px;transition:background .15s}.stepper button:hover:not(:disabled){background:var(--surface-2);color:var(--text)}.stepper button:disabled{opacity:.35;cursor:not-allowed}.stepper input{width:52px;height:100%;border:0;border-left:1px solid var(--border);border-right:1px solid var(--border);background:none;text-align:center;font-variant-numeric:tabular-nums;-moz-appearance:textfield}.stepper input:focus{outline:none;background:var(--surface-2)}.stepper input::-webkit-inner-spin-button{-webkit-appearance:none}.dropzone{position:relative;display:flex;flex-direction:column;align-items:center;gap:6px;padding:28px 20px;border:1.5px dashed var(--border-strong);border-radius:var(--radius-lg);background:var(--surface);text-align:center;cursor:pointer;transition:border-color .15s,background .15s}.dropzone:hover,.dropzone.dragover{border-color:var(--primary);background:var(--primary-soft)}.dropzone input{position:absolute;inset:0;opacity:0;cursor:pointer}.dropzone .dz-icon{width:40px;height:40px;border-radius:10px;display:grid;place-items:center;background:var(--surface-2);color:var(--text-2);margin-bottom:6px}.dropzone b{font-weight:500}.dropzone small{color:var(--text-3);font-size:12.5px}.file-list{display:flex;flex-direction:column;gap:6px;margin-top:10px}.file-item{display:flex;align-items:center;gap:10px;padding:8px 10px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);font-size:13px;animation:jsg-fade .25s var(--ease)}.file-item .icon{color:var(--text-3)}.file-item small{color:var(--text-3);margin-left:auto;font-family:var(--mono);font-size:11.5px}.select{position:relative;width:100%}.select-trigger{width:100%;height:38px;display:flex;align-items:center;justify-content:space-between;gap:8px;padding:0 10px 0 12px;background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius-sm);cursor:pointer;text-align:left;transition:border-color .15s,box-shadow .15s}.select-trigger:hover{border-color:var(--text-3)}.select.open .select-trigger,.select-trigger:focus-visible{border-color:var(--primary);box-shadow:var(--ring)}.select-trigger .placeholder{color:var(--text-3)}.select-trigger .icon{color:var(--text-3);transition:transform .2s var(--ease)}.select.open .select-trigger .icon{transform:rotate(180deg)}.menu{position:absolute;z-index:80;top:calc(100% + 6px);left:0;min-width:100%;max-height:300px;overflow-y:auto;padding:5px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);display:none;transform-origin:top}.menu.menu-right{left:auto;right:0}.menu.menu-up{top:auto;bottom:calc(100% + 6px);transform-origin:bottom}.open>.menu{display:block;animation:jsg-pop .16s var(--ease)}.menu.menu-up{animation-name:jsg-pop-up}@keyframes jsg-pop{0%{opacity:0;transform:translateY(-4px) scale(.98)}}@keyframes jsg-pop-up{0%{opacity:0;transform:translateY(4px) scale(.98)}}.menu-item{display:flex;align-items:center;gap:10px;width:100%;padding:7px 10px;border:0;background:none;border-radius:6px;font-size:13.5px;text-align:left;cursor:pointer;color:var(--text);text-decoration:none!important}.menu-item:hover,.menu-item.hover{background:var(--surface-2)}.menu-item .icon{width:15px;height:15px;color:var(--text-2)}.menu-item .check{margin-left:auto;color:var(--primary);opacity:0}.menu-item.selected .check{opacity:1}.menu-item.danger,.menu-item.danger .icon{color:var(--danger)}.menu-item .kbd{margin-left:auto}.menu-sep{height:1px;background:var(--border);margin:5px -5px}.menu-label{padding:6px 10px 4px;font-size:11px;color:var(--text-3);font-weight:600;letter-spacing:.04em;text-transform:uppercase}.dropdown{position:relative;display:inline-block}.dropdown>.menu{min-width:200px}.check-label{display:inline-flex;align-items:center;gap:9px;cursor:pointer;user-select:none;font-size:14px}.check-label.disabled{opacity:.45;cursor:not-allowed}.checkbox,.radio{appearance:none;-webkit-appearance:none;margin:0;width:17px;height:17px;flex:none;border:1.5px solid var(--border-strong);background:var(--surface);cursor:pointer;display:inline-grid;place-items:center;vertical-align:middle;transition:background .15s,border-color .15s,box-shadow .15s}.checkbox{border-radius:5px}.radio{border-radius:50%}.checkbox:hover,.radio:hover{border-color:var(--primary)}.checkbox:focus-visible,.radio:focus-visible{box-shadow:var(--ring)}.checkbox:disabled,.radio:disabled{cursor:not-allowed}.checkbox:after{content:"";width:9px;height:5px;border:2px solid #fff;border-top:0;border-right:0;transform:rotate(-45deg) translate(1px,-1px) scale(0);transition:transform .15s var(--ease)}.checkbox:checked,.checkbox:indeterminate{background:var(--primary);border-color:var(--primary)}.checkbox:checked:after{transform:rotate(-45deg) translate(1px,-1px) scale(1)}.checkbox:indeterminate:after{width:8px;height:0;border-left:0;border-bottom:2px solid #fff;transform:none}.radio:after{content:"";width:7px;height:7px;border-radius:50%;background:#fff;transform:scale(0);transition:transform .15s var(--ease)}.radio:checked{background:var(--primary);border-color:var(--primary)}.radio:checked:after{transform:scale(1)}.switch{appearance:none;-webkit-appearance:none;margin:0;position:relative;width:36px;height:20px;flex:none;border-radius:99px;background:var(--border-strong);cursor:pointer;transition:background .2s var(--ease)}.switch:after{content:"";position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:#fff;box-shadow:0 1px 3px #0003;transition:transform .2s var(--ease),width .15s}.switch:checked{background:var(--primary)}.switch:checked:after{transform:translate(16px)}.switch:focus-visible{box-shadow:var(--ring)}.switch:active:after{width:19px}.switch:checked:active:after{transform:translate(13px)}.switch:disabled{opacity:.45;cursor:not-allowed}.option-card{position:relative;display:flex;gap:12px;padding:14px 16px;border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--surface);cursor:pointer;transition:border-color .15s,box-shadow .15s,background .15s}.option-card:hover{border-color:var(--text-3)}.option-card:has(input:checked){border-color:var(--primary);box-shadow:var(--ring);background:color-mix(in srgb,var(--primary) 4%,var(--surface))}.option-card b{display:block;font-weight:500}.option-card small{color:var(--text-3);font-size:12.5px}.setting{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 0;border-bottom:1px solid var(--border)}.setting:last-child{border-bottom:0;padding-bottom:0}.setting:first-child{padding-top:0}.setting b{display:block;font-weight:500;font-size:14px}.setting small{color:var(--text-3);font-size:12.5px}.segmented{position:relative;display:inline-flex;padding:3px;background:var(--surface-2);border-radius:9px;border:1px solid var(--border)}.segmented button{position:relative;z-index:1;height:28px;padding:0 14px;border:0;background:none;font-size:13px;font-weight:500;color:var(--text-2);cursor:pointer;border-radius:6px;transition:color .2s;white-space:nowrap}.segmented button.active{color:var(--text)}.segmented .thumb{position:absolute;top:3px;bottom:3px;left:0;border-radius:6px;background:var(--surface);box-shadow:0 1px 3px #00000014,0 0 0 .5px var(--border);transition:transform .25s var(--ease),width .25s var(--ease)}[data-theme=dark] .segmented .thumb{background:var(--surface-3)}.slider{-webkit-appearance:none;appearance:none;width:100%;height:4px;border-radius:99px;background:linear-gradient(to right,var(--primary) var(--p,50%),var(--border-strong) var(--p,50%));outline:none;cursor:pointer;margin:8px 0}.slider::-webkit-slider-thumb{-webkit-appearance:none;width:18px;height:18px;border-radius:50%;background:#fff;border:0;box-shadow:0 0 0 1px #00000014,0 2px 6px #0000002e;transition:transform .15s,box-shadow .15s}.slider::-moz-range-thumb{width:18px;height:18px;border-radius:50%;background:#fff;border:0;box-shadow:0 0 0 1px #00000014,0 2px 6px #0000002e}.slider:hover::-webkit-slider-thumb{transform:scale(1.1)}.slider:focus-visible::-webkit-slider-thumb{box-shadow:0 0 0 5px var(--primary-soft),0 2px 6px #0000002e}.slider-row{display:flex;align-items:center;gap:14px}.slider-row output{min-width:38px;text-align:right;font:500 13px var(--mono);color:var(--text-2)}.chip{display:inline-flex;align-items:center;gap:6px;height:30px;padding:0 12px;border-radius:var(--radius-full);border:1px solid var(--border-strong);background:var(--surface);font-size:13px;color:var(--text-2);cursor:pointer;transition:all .15s}.chip:hover{color:var(--text);border-color:var(--text-3)}.chip.active{background:var(--text);border-color:var(--text);color:var(--bg)}.badge{display:inline-flex;align-items:center;gap:5px;height:22px;padding:0 8px;border-radius:99px;font-size:12px;font-weight:500;background:var(--surface-2);color:var(--text-2);border:1px solid var(--border);white-space:nowrap}.badge.primary{background:var(--primary-soft);color:var(--primary);border-color:transparent}.badge.success{background:var(--success-soft);color:var(--success);border-color:transparent}.badge.warning{background:var(--warning-soft);color:var(--warning);border-color:transparent}.badge.danger{background:var(--danger-soft);color:var(--danger);border-color:transparent}.badge.solid{background:var(--primary);color:#fff;border-color:transparent}.badge .dot{width:6px;height:6px;border-radius:50%;background:currentColor}.badge .dot.pulse{animation:jsg-pulse 1.6s infinite}@keyframes jsg-pulse{0%{box-shadow:0 0 0 0 currentColor}70%{box-shadow:0 0 0 5px transparent}to{box-shadow:0 0 0 0 transparent}}.tag{display:inline-flex;align-items:center;gap:4px;height:26px;padding:0 6px 0 10px;border-radius:6px;background:var(--surface-2);border:1px solid var(--border);font-size:12.5px;transition:opacity .2s,transform .2s}.tag button{width:18px;height:18px;border:0;background:none;border-radius:4px;color:var(--text-3);cursor:pointer;display:grid;place-items:center;padding:0}.tag button:hover{background:var(--border);color:var(--text)}.tag.removing{opacity:0;transform:scale(.85)}.tag-input{display:flex;flex-wrap:wrap;align-items:center;gap:6px;min-height:38px;padding:5px 8px;border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface);cursor:text;transition:border-color .15s,box-shadow .15s}.tag-input:focus-within{border-color:var(--primary);box-shadow:var(--ring)}.tag-input input{flex:1;min-width:80px;border:0;background:none;outline:none;font-size:13.5px;height:26px}.has-count{position:relative;display:inline-flex}.count{position:absolute;top:-5px;right:-5px;min-width:18px;height:18px;padding:0 5px;border-radius:99px;background:var(--danger);color:#fff;font-size:11px;font-weight:600;display:grid;place-items:center;border:2px solid var(--surface);line-height:1}.count.dot-only{min-width:10px;width:10px;height:10px;padding:0;top:-2px;right:-2px}.alert{display:flex;gap:12px;padding:14px 16px;border-radius:var(--radius);border:1px solid var(--border);background:var(--surface)}.alert>.icon{width:18px;height:18px;margin-top:1px}.alert b{display:block;font-weight:600;font-size:14px;margin-bottom:2px}.alert p{color:var(--text-2);font-size:13px}.alert .alert-close{margin-left:auto;align-self:flex-start;border:0;background:none;color:var(--text-3);cursor:pointer;padding:2px;border-radius:4px;display:grid}.alert .alert-close:hover{color:var(--text)}.alert.info{background:var(--primary-soft);border-color:transparent}.alert.info>.icon{color:var(--primary)}.alert.success{background:var(--success-soft);border-color:transparent}.alert.success>.icon{color:var(--success)}.alert.warning{background:var(--warning-soft);border-color:transparent}.alert.warning>.icon{color:var(--warning)}.alert.danger{background:var(--danger-soft);border-color:transparent}.alert.danger>.icon{color:var(--danger)}.banner{display:flex;align-items:center;justify-content:center;gap:10px;padding:8px 16px;background:var(--text);color:var(--bg);font-size:13px;text-align:center}[data-theme=dark] .banner{background:var(--surface-2);color:var(--text);border-bottom:1px solid var(--border)}.banner .countdown span{min-width:24px;height:22px;font-size:12px;border-radius:5px;background:color-mix(in srgb,currentColor 16%,transparent);color:inherit}.banner .countdown i{color:inherit;opacity:.6}.banner a{color:inherit;text-decoration:underline;text-underline-offset:3px}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden;transition:box-shadow .2s var(--ease),transform .2s var(--ease),border-color .2s}a.card{color:inherit;display:block}.card:has(.select,.datepicker,[data-datepicker],.dropdown){overflow:visible}.card:has(.select,.datepicker,[data-datepicker],.dropdown)>:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.card:has(.select,.datepicker,[data-datepicker],.dropdown)>:last-child{border-bottom-left-radius:inherit;border-bottom-right-radius:inherit}a.card:hover{text-decoration:none}.card.hoverable:hover,a.card:hover{box-shadow:var(--shadow);transform:translateY(-2px);border-color:var(--border-strong)}.card-cover{height:140px;background:linear-gradient(135deg,#c7d7ff,#e9d5ff 60%,#fde2e4);object-fit:cover;width:100%}[data-theme=dark] .card-cover{background:linear-gradient(135deg,#1e2a55,#3b2257 60%,#4a2530)}.card-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 20px;border-bottom:1px solid var(--border)}.card-head h3{font-size:15px;font-weight:600}.card-body{padding:20px}.card-body h3{font-size:15px;font-weight:600;margin-bottom:4px}.card-body p{color:var(--text-2);font-size:13.5px}.card-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 20px;border-top:1px solid var(--border);background:var(--surface-2)}.stat .k{font-size:12.5px;color:var(--text-3);display:flex;align-items:center;gap:6px}.stat .v{font-size:26px;font-weight:650;letter-spacing:-.02em;margin-top:4px;font-variant-numeric:tabular-nums}.stat .d{font-size:12px;margin-top:2px;color:var(--text-3)}.up{color:var(--success)}.down{color:var(--danger)}.feature{padding:24px}.feature-icon{width:40px;height:40px;border-radius:10px;display:grid;place-items:center;background:var(--primary-soft);color:var(--primary);margin-bottom:16px}.feature-icon .icon{width:20px;height:20px}.feature h3{font-size:15.5px;font-weight:600;margin-bottom:6px}.feature p{color:var(--text-2);font-size:13.5px}.price-card{display:flex;flex-direction:column;padding:28px;gap:20px}.price-card.featured{border-color:var(--primary);box-shadow:0 0 0 1px var(--primary),var(--shadow)}.price{display:flex;align-items:baseline;gap:4px}.price b{font-size:38px;font-weight:700;letter-spacing:-.03em}.price span{color:var(--text-3);font-size:13px}.check-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px;font-size:13.5px;color:var(--text-2)}.check-list li{display:flex;gap:10px;align-items:flex-start}.check-list .icon{color:var(--primary);margin-top:3px;width:15px;height:15px}.avatar{width:36px;height:36px;border-radius:50%;display:inline-grid;place-items:center;font-size:13px;font-weight:600;color:#fff;flex:none;position:relative;background:linear-gradient(135deg,#60a5fa,#2563eb);object-fit:cover}.avatar.xs{width:22px;height:22px;font-size:10px}.avatar.sm{width:28px;height:28px;font-size:11px}.avatar.lg{width:48px;height:48px;font-size:16px}.avatar.xl{width:72px;height:72px;font-size:24px}.avatar.square{border-radius:var(--radius)}.avatar .status{position:absolute;right:0;bottom:0;width:10px;height:10px;border-radius:50%;background:var(--success);border:2px solid var(--surface)}.avatar-group{display:flex}.avatar-group .avatar{border:2px solid var(--surface);margin-left:-10px}.avatar-group .avatar:first-child{margin-left:0}.a1{background:linear-gradient(135deg,#60a5fa,#2563eb)}.a2{background:linear-gradient(135deg,#f472b6,#db2777)}.a3{background:linear-gradient(135deg,#34d399,#059669)}.a4{background:linear-gradient(135deg,#fbbf24,#d97706)}.a5{background:linear-gradient(135deg,#a78bfa,#7c3aed)}.a0{background:var(--surface-2);color:var(--text-2)}.media{display:flex;align-items:center;gap:10px;min-width:0}.media b{display:block;font-weight:500;font-size:14px}.media small{display:block;color:var(--text-3);font-size:12px}.tabs-list{position:relative;display:flex;gap:4px;border-bottom:1px solid var(--border);overflow-x:auto;scrollbar-width:none}.tabs-list::-webkit-scrollbar{display:none}.tabs-list button{height:38px;padding:0 12px;border:0;background:none;color:var(--text-2);font-size:13.5px;font-weight:500;cursor:pointer;white-space:nowrap;transition:color .15s}.tabs-list button:hover,.tabs-list button.active{color:var(--text)}.tabs-list .ink{position:absolute;bottom:0;left:0;height:2px;background:var(--text);border-radius:2px;transition:transform .3s var(--ease),width .3s var(--ease)}.tab-panel{display:none;padding-top:16px;animation:jsg-fade .25s var(--ease)}.tab-panel.active{display:block}@keyframes jsg-fade{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}.accordion{border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;background:var(--surface)}.accordion.flush{border:0;border-radius:0;background:none}.accordion.flush .acc-item{border-bottom:1px solid var(--border)}.accordion.flush .acc-head{background:none;padding-left:0;padding-right:0}.accordion.flush .acc-body p{padding-left:0;padding-right:0}.acc-item+.acc-item{border-top:1px solid var(--border)}.accordion.flush .acc-item+.acc-item{border-top:0}.acc-head{width:100%;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 16px;border:0;background:var(--surface);font-size:14px;font-weight:500;cursor:pointer;text-align:left}.acc-head:hover{color:var(--primary)}.acc-head .icon{color:var(--text-3);transition:transform .25s var(--ease)}.acc-item.open .acc-head .icon{transform:rotate(45deg)}.acc-body{display:grid;grid-template-rows:0fr;transition:grid-template-rows .3s var(--ease)}.acc-item.open .acc-body{grid-template-rows:1fr}.acc-body>div{overflow:hidden}.acc-body p{padding:0 16px 16px;color:var(--text-2);font-size:13.5px}.progress{height:6px;border-radius:99px;background:var(--surface-2);overflow:hidden}.progress>i{display:block;height:100%;border-radius:inherit;background:var(--primary);transition:width .6s var(--ease)}.progress.success>i{background:var(--success)}.progress.warning>i{background:var(--warning)}.progress.danger>i{background:var(--danger)}.progress.sm{height:4px}.progress.lg{height:10px}.progress.indeterminate>i{width:35%;animation:jsg-indet 1.3s var(--ease) infinite}@keyframes jsg-indet{0%{transform:translate(-100%)}to{transform:translate(300%)}}.progress-head{display:flex;justify-content:space-between;font-size:13px;margin-bottom:8px}.progress-head span:last-child{color:var(--text-3);font-family:var(--mono);font-size:12px}.ring{--v:0;--size:64px;width:var(--size);height:var(--size);border-radius:50%;background:conic-gradient(var(--primary) calc(var(--v)*1%),var(--surface-2) 0);display:grid;place-items:center}.ring:before{content:attr(data-label);width:calc(var(--size) - 12px);height:calc(var(--size) - 12px);border-radius:50%;background:var(--surface);display:grid;place-items:center;font-size:13px;font-weight:600;font-variant-numeric:tabular-nums}.spinner{width:20px;height:20px;border-radius:50%;border:2px solid var(--border-strong);border-top-color:var(--primary);animation:jsg-spin .7s linear infinite;flex:none}.spinner.sm{width:14px;height:14px}.spinner.lg{width:32px;height:32px;border-width:3px}.dots{display:inline-flex;gap:4px}.dots i{width:6px;height:6px;border-radius:50%;background:var(--text-3);animation:jsg-bounce 1.2s infinite ease-in-out}.dots i:nth-child(2){animation-delay:.15s}.dots i:nth-child(3){animation-delay:.3s}@keyframes jsg-bounce{0%,80%,to{transform:scale(.6);opacity:.4}40%{transform:scale(1);opacity:1}}.skeleton{background:linear-gradient(90deg,var(--surface-2) 25%,var(--surface-3) 50%,var(--surface-2) 75%);background-size:200% 100%;animation:jsg-shimmer 1.4s infinite;border-radius:6px}@keyframes jsg-shimmer{to{background-position:-200% 0}}.table-wrap{border:1px solid var(--border);border-radius:var(--radius);overflow:auto;background:var(--surface)}.card>.table-wrap{border:0;border-radius:0}.table{width:100%;border-collapse:collapse;font-size:13.5px;white-space:nowrap}.table th{text-align:left;font-weight:500;font-size:12.5px;color:var(--text-3);padding:10px 16px;background:var(--surface-2);border-bottom:1px solid var(--border)}.table td{padding:12px 16px;border-bottom:1px solid var(--border)}.table tr:last-child td{border-bottom:0}.table tbody tr{transition:background .12s}.table.hover tbody tr:hover,.table tbody tr:hover{background:var(--surface-2)}.table tbody tr.selected{background:var(--primary-soft)}.table .num{text-align:right;font-variant-numeric:tabular-nums}.table th.sortable{cursor:pointer;user-select:none}.table th.sortable:hover{color:var(--text)}.table th .arrow{display:inline-block;margin-left:4px;opacity:.4;transition:transform .2s}.table th.asc .arrow,.table th.desc .arrow{opacity:1;color:var(--text)}.table th.desc .arrow{transform:rotate(180deg)}.list{display:flex;flex-direction:column;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);overflow:hidden}.list-item{display:flex;align-items:center;gap:12px;padding:12px 16px;color:var(--text);text-decoration:none!important;transition:background .12s}.list-item+.list-item{border-top:1px solid var(--border)}a.list-item:hover,button.list-item:hover{background:var(--surface-2)}.list-item .meta{margin-left:auto;color:var(--text-3);font-size:12.5px;white-space:nowrap}.timeline{list-style:none;margin:0;padding:0;position:relative}.timeline li{position:relative;padding:0 0 20px 26px}.timeline li:last-child{padding-bottom:0}.timeline li:before{content:"";position:absolute;left:4px;top:6px;width:10px;height:10px;border-radius:50%;background:var(--surface);border:2px solid var(--border-strong)}.timeline li:after{content:"";position:absolute;left:9px;top:20px;bottom:0;width:2px;background:var(--border)}.timeline li:last-child:after{display:none}.timeline li.active:before{border-color:var(--primary);background:var(--primary);box-shadow:var(--ring)}.timeline b{font-weight:500;font-size:14px}.timeline small{display:block;color:var(--text-3);font-size:12px}.timeline p{color:var(--text-2);font-size:13px;margin-top:4px}.dl{display:grid;grid-template-columns:max-content 1fr;gap:10px 24px;font-size:13.5px;margin:0}.dl dt{color:var(--text-3)}.dl dd{margin:0}.breadcrumb{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--text-3);flex-wrap:wrap}.breadcrumb a{color:var(--text-2);padding:2px 4px;border-radius:4px}.breadcrumb a:hover{color:var(--text);background:var(--surface-2);text-decoration:none}.breadcrumb .cur{color:var(--text);font-weight:500}.pagination{display:flex;align-items:center;gap:4px;flex-wrap:wrap}.pagination button{min-width:32px;height:32px;padding:0 8px;border:1px solid transparent;background:none;border-radius:var(--radius-sm);font-size:13px;color:var(--text-2);cursor:pointer;font-variant-numeric:tabular-nums;display:grid;place-items:center;transition:background .15s,color .15s}.pagination button:hover:not(:disabled):not(.active){background:var(--surface-2);color:var(--text)}.pagination button.active{border-color:var(--border-strong);background:var(--surface);color:var(--text);font-weight:600;box-shadow:var(--shadow-sm)}.pagination button:disabled{opacity:.35;cursor:not-allowed}.pagination .ellipsis{color:var(--text-3);width:24px;text-align:center}.steps{display:flex}.step{flex:1;display:flex;flex-direction:column;gap:8px;position:relative;min-width:0}.step:not(:last-child):after{content:"";position:absolute;top:13px;left:36px;right:8px;height:2px;border-radius:2px;background:var(--border);transition:background .3s}.step.done:not(:last-child):after{background:var(--primary)}.step-dot{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;font-size:12px;font-weight:600;border:1.5px solid var(--border-strong);background:var(--surface);color:var(--text-3);transition:all .3s var(--ease)}.step.active .step-dot{border-color:var(--primary);color:var(--primary);box-shadow:var(--ring)}.step.done .step-dot{background:var(--primary);border-color:var(--primary);color:#fff}.step b{font-size:13px;font-weight:500}.step small{font-size:12px;color:var(--text-3);display:block;margin-top:-6px}.step:not(.active):not(.done) b{color:var(--text-3)}@media (max-width:600px){.step small{display:none}.step b{font-size:12px}}[data-tip]{position:relative}[data-tip]:after{content:attr(data-tip);position:absolute;bottom:calc(100% + 8px);left:50%;transform:translate(-50%,4px);padding:5px 9px;border-radius:6px;background:var(--text);color:var(--bg);font-size:12px;font-weight:500;line-height:1.4;white-space:nowrap;pointer-events:none;opacity:0;transition:opacity .15s,transform .15s var(--ease);z-index:90}[data-tip]:hover:after,[data-tip]:focus-visible:after{opacity:1;transform:translate(-50%);transition-delay:.25s}[data-tip-pos=bottom]:after{bottom:auto;top:calc(100% + 8px);transform:translate(-50%,-4px)}[data-tip-pos=right]:after{bottom:auto;left:calc(100% + 8px);top:50%;transform:translate(-4px,-50%)}[data-tip-pos=right]:hover:after{transform:translateY(-50%)}.jsg-tip-js [data-tip]:after{display:none}.jsg-tip{position:fixed;left:0;top:0;z-index:1000;width:max-content;max-width:min(280px,calc(100vw - 8px));padding:5px 9px;border-radius:6px;background:var(--text);color:var(--bg);font-size:12px;font-weight:500;line-height:1.4;pointer-events:none;opacity:0;transform:translateY(4px);transition:opacity .15s,transform .15s var(--ease)}.jsg-tip[data-pos=bottom]{transform:translateY(-4px)}.jsg-tip[data-pos=right]{transform:translate(-4px)}.jsg-tip.show{opacity:1;transform:none}.card:has(.open>.menu,.datepicker.open){overflow:visible;position:relative;z-index:5}.menu.flip,.dp-pop.flip{top:auto;bottom:calc(100% + 6px);transform-origin:bottom}.menu.flip{animation-name:jsg-pop-up}.menu.float,.dp-pop.float{position:fixed;z-index:1001}.dp-pop{overflow-y:auto}:root{--signin-brand:#f5576c;--signin-paper:#efede8;--signin-ink:#141217;--signin-logo:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 64 64'%3E%3ClinearGradient id='g' gradientUnits='userSpaceOnUse' x1='0' x2='64' y1='0' y2='64'%3E%3Cstop offset='0' stop-color='%23f093fb'/%3E%3Cstop offset='1' stop-color='%23f5576c'/%3E%3C/linearGradient%3E%3Cpath fill='url%28%23g%29' d='m32 30.74016 8.08892 14.0081h-16.16783zm29.296 24.75663-4.46936-7.74894h-34.64531c-1.17306 2.0415-4.64338 8.03841-5.76922 9.99863h43.58406a1.511 1.511 0 0 0 1.29983-2.24969zm-29.296-30.73579c.92764 1.5859 10.3529 17.94043 11.53838 19.9872l11.54849.00006-21.78706-37.74484a1.50144 1.50144 0 0 0 -2.59962 0l-4.46942 7.74894c1.11967 1.94014 4.5964 7.97373 5.76923 10.00864zm-11.5384 19.98726 9.80866-16.99768c-1.176-2.0298-4.6393-8.058-5.76924-10.00863l-21.79702 37.75484a1.48977 1.48977 0 0 0 0 1.49979 1.50754 1.50754 0 0 0 1.29981.7499h8.95879c2.02217-3.50789 5.47674-9.49017 7.499-12.99822z'/%3E%3C/svg%3E");--signin-logo-mono:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 64 64'%3E%3Cpath fill='%23000' d='m32 30.74016 8.08892 14.0081h-16.16783zm29.296 24.75663-4.46936-7.74894h-34.64531c-1.17306 2.0415-4.64338 8.03841-5.76922 9.99863h43.58406a1.511 1.511 0 0 0 1.29983-2.24969zm-29.296-30.73579c.92764 1.5859 10.3529 17.94043 11.53838 19.9872l11.54849.00006-21.78706-37.74484a1.50144 1.50144 0 0 0 -2.59962 0l-4.46942 7.74894c1.11967 1.94014 4.5964 7.97373 5.76923 10.00864zm-11.5384 19.98726 9.80866-16.99768c-1.176-2.0298-4.6393-8.058-5.76924-10.00863l-21.79702 37.75484a1.48977 1.48977 0 0 0 0 1.49979 1.50754 1.50754 0 0 0 1.29981.7499h8.95879c2.02217-3.50789 5.47674-9.49017 7.499-12.99822z'/%3E%3C/svg%3E");--signin-pattern:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 120 120'%3E%3Cg fill='%23fff' fill-opacity='.07'%3E%3Cpath transform='translate%2814 14%29 scale%28.5%29' d='m32 30.74016 8.08892 14.0081h-16.16783zm29.296 24.75663-4.46936-7.74894h-34.64531c-1.17306 2.0415-4.64338 8.03841-5.76922 9.99863h43.58406a1.511 1.511 0 0 0 1.29983-2.24969zm-29.296-30.73579c.92764 1.5859 10.3529 17.94043 11.53838 19.9872l11.54849.00006-21.78706-37.74484a1.50144 1.50144 0 0 0 -2.59962 0l-4.46942 7.74894c1.11967 1.94014 4.5964 7.97373 5.76923 10.00864zm-11.5384 19.98726 9.80866-16.99768c-1.176-2.0298-4.6393-8.058-5.76924-10.00863l-21.79702 37.75484a1.48977 1.48977 0 0 0 0 1.49979 1.50754 1.50754 0 0 0 1.29981.7499h8.95879c2.02217-3.50789 5.47674-9.49017 7.499-12.99822z'/%3E%3Cpath transform='translate%2874 74%29 scale%28.5%29' d='m32 30.74016 8.08892 14.0081h-16.16783zm29.296 24.75663-4.46936-7.74894h-34.64531c-1.17306 2.0415-4.64338 8.03841-5.76922 9.99863h43.58406a1.511 1.511 0 0 0 1.29983-2.24969zm-29.296-30.73579c.92764 1.5859 10.3529 17.94043 11.53838 19.9872l11.54849.00006-21.78706-37.74484a1.50144 1.50144 0 0 0 -2.59962 0l-4.46942 7.74894c1.11967 1.94014 4.5964 7.97373 5.76923 10.00864zm-11.5384 19.98726 9.80866-16.99768c-1.176-2.0298-4.6393-8.058-5.76924-10.00863l-21.79702 37.75484a1.48977 1.48977 0 0 0 0 1.49979 1.50754 1.50754 0 0 0 1.29981.7499h8.95879c2.02217-3.50789 5.47674-9.49017 7.499-12.99822z'/%3E%3C/g%3E%3C/svg%3E")}[data-theme=dark]{--signin-paper:#131315}.signin{display:grid;grid-template-columns:minmax(380px,42%) 1fr;min-height:100vh;background:var(--bg)}.signin-art{position:relative;overflow:hidden;display:flex;flex-direction:column;padding:36px 44px;container-type:inline-size;transition:background-color .3s,color .3s}.signin-art>*{position:relative;z-index:1}.signin-art .brand{color:inherit}.signin-mark{display:inline-block;width:32px;height:32px;flex:none;background:var(--signin-logo) center/contain no-repeat}.signin-art-meta,.signin-art-word{display:none}.signin-art-foot{margin-top:auto;display:flex;align-items:flex-end;justify-content:space-between;gap:16px}.signin-art-foot b{display:block;font-size:22px;font-weight:650;letter-spacing:-.01em;margin-bottom:4px}.signin-art-foot span{font-size:13px;opacity:.7}.signin-art-foot .signin-mark{display:none}.signin-main{display:flex;flex-direction:column;min-width:0;padding:20px 28px}.signin-top{display:flex;align-items:center;gap:8px;min-height:40px}.signin-top .signin-brand{display:none}.signin-body{flex:1;display:grid;place-items:center;padding:32px 0}.signin-card{width:100%;max-width:380px}.signin-card-logo{display:none;width:40px;height:40px;margin-bottom:20px}.signin-foot{display:flex;justify-content:center;flex-wrap:wrap;gap:6px 18px;font-size:12.5px;color:var(--text-3)}.signin-foot a{color:inherit}.signin-pending .signin-art{visibility:hidden}.signin-switch{display:inline-flex;padding:2px;gap:2px;border-radius:8px;background:var(--surface-2);border:1px solid var(--border)}.signin-switch button{width:26px;height:24px;border:0;border-radius:6px;background:none;color:var(--text-3);font:600 11.5px var(--font);cursor:pointer;transition:background .15s,color .15s}.signin-switch button:hover{color:var(--text)}[data-signin-style=a] [data-signin-style-set=a],[data-signin-style=b] [data-signin-style-set=b],[data-signin-style=c] [data-signin-style-set=c],[data-signin-style=d] [data-signin-style-set=d]{background:var(--surface);color:var(--text);box-shadow:var(--shadow-sm)}[data-signin-style=a] .signin{grid-template-columns:1fr}[data-signin-style=a] .signin-art{display:none}[data-signin-style=a] .signin-top .signin-brand{display:inline-flex}[data-signin-style=a] .signin-card{max-width:400px;background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:36px 32px;box-shadow:var(--shadow-sm)}[data-signin-style=a] .signin-card-logo{display:block;background:var(--signin-logo) center/contain no-repeat}[data-signin-style=b] .signin-art{background:var(--signin-brand);color:#fff}[data-signin-style=b] .signin-art:after{content:"";position:absolute;width:132cqi;aspect-ratio:1;right:-38cqi;bottom:-28cqi;background:#ffffff29;-webkit-mask:var(--signin-logo-mono) center/contain no-repeat;mask:var(--signin-logo-mono) center/contain no-repeat;z-index:0}[data-signin-style=b] .signin-art .brand-logo{filter:brightness(0) invert(1)}[data-signin-style=c] .signin-art{background:var(--signin-paper);color:var(--text);border-right:1px solid var(--border)}[data-signin-style=c] .signin-art>.brand{display:none}[data-signin-style=c] .signin-art-meta{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;font-size:12px;line-height:1.6;padding-bottom:14px;border-bottom:1.5px solid currentColor}[data-signin-style=c] .signin-art-meta span{opacity:.55}[data-signin-style=c] .signin-art-word{display:block;margin-top:auto;font-size:var(--signin-word,21cqi);font-weight:750;letter-spacing:-.065em;line-height:.82;margin-left:-.05em;white-space:nowrap}[data-signin-style=c] .signin-art-foot{margin-top:22px;padding-top:14px;border-top:1.5px solid currentColor}[data-signin-style=c] .signin-art-foot b{font-size:18px}[data-signin-style=c] .signin-art-foot .signin-mark{display:inline-block}[data-signin-style=d] .signin-art{background:var(--signin-ink);color:#fff}[data-theme=dark][data-signin-style=d] .signin-art{border-right:1px solid var(--border)}[data-signin-style=d] .signin-art:before{content:"";position:absolute;inset:-30%;background:var(--signin-pattern) 0 0/96px 96px repeat;transform:rotate(-8deg);z-index:0}@media (max-width:900px){.signin{grid-template-columns:1fr}.signin-art{display:none}.signin-main{padding:16px}.signin-top .signin-brand{display:inline-flex}[data-signin-style] .signin-card{max-width:400px;background:none;border:0;box-shadow:none;padding:0}.signin-card-logo{display:none!important}.signin-switch{display:none}}.overlay{position:fixed;inset:0;z-index:100;background:#0a0a0e6b;backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);display:grid;place-items:center;padding:16px;opacity:0;visibility:hidden;transition:opacity .2s,visibility .2s}.overlay.open{opacity:1;visibility:visible}.modal{position:relative;width:100%;max-width:440px;max-height:calc(100vh - 32px);overflow:auto;background:var(--surface);border-radius:16px;box-shadow:var(--shadow-lg);border:1px solid var(--border);transform:translateY(12px) scale(.97);transition:transform .25s var(--ease)}.modal.lg{max-width:640px}.overlay.open .modal{transform:none}.modal-head{padding:22px 22px 0;display:flex;gap:14px}.modal-head h3{font-size:16px;font-weight:600}.modal-head p{color:var(--text-2);font-size:13.5px;margin-top:4px}.modal-body{padding:16px 22px 0}.modal-foot{display:flex;justify-content:flex-end;gap:8px;padding:22px}.modal-icon{width:40px;height:40px;border-radius:50%;flex:none;display:grid;place-items:center;background:var(--primary-soft);color:var(--primary)}.modal-icon.danger{background:var(--danger-soft);color:var(--danger)}.modal-icon .icon{width:20px;height:20px}.drawer-overlay{place-items:stretch;justify-items:end;padding:0}.drawer{width:min(400px,100%);height:100%;background:var(--surface);border-left:1px solid var(--border);box-shadow:var(--shadow-lg);transform:translate(100%);transition:transform .3s var(--ease);display:flex;flex-direction:column}.overlay.open .drawer{transform:none}.drawer-head{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--border)}.drawer-head h3{font-size:15px;font-weight:600}.drawer-body{flex:1;padding:20px;overflow:auto}.drawer-foot{padding:16px 20px;border-top:1px solid var(--border);display:flex;gap:8px;justify-content:flex-end}@media (max-width:600px){.overlay:not(.drawer-overlay){align-items:end;padding:0}.overlay:not(.drawer-overlay) .modal{max-width:none;border-radius:18px 18px 0 0;transform:translateY(100%)}.overlay.open:not(.drawer-overlay) .modal{transform:none}.modal-foot .btn{flex:1}}.toaster{position:fixed;z-index:200;bottom:20px;right:20px;display:flex;flex-direction:column;gap:8px;align-items:flex-end;pointer-events:none}.toast{pointer-events:auto;display:flex;align-items:center;gap:10px;min-width:260px;max-width:380px;padding:12px 14px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);font-size:13.5px;animation:jsg-toast-in .35s var(--ease)}.toast.out{animation:jsg-toast-out .25s var(--ease) forwards}.toast>.icon{width:18px;height:18px}.toast.success>.icon{color:var(--success)}.toast.danger>.icon{color:var(--danger)}.toast.info>.icon{color:var(--primary)}.toast.warning>.icon{color:var(--warning)}.toast .t-close{margin-left:auto;border:0;background:none;color:var(--text-3);cursor:pointer;padding:2px;border-radius:4px;display:grid}.toast .t-close:hover{color:var(--text);background:var(--surface-2)}@keyframes jsg-toast-in{0%{opacity:0;transform:translateY(12px) scale(.96)}to{opacity:1;transform:none}}@keyframes jsg-toast-out{to{opacity:0;transform:translate(24px)}}@media (max-width:600px){.toaster{inset:12px 12px auto;align-items:stretch;flex-direction:column-reverse}.toast{max-width:none;animation-name:jsg-toast-in-top}}@keyframes jsg-toast-in-top{0%{opacity:0;transform:translateY(-12px) scale(.96)}to{opacity:1;transform:none}}.code{position:relative;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-2);overflow:hidden}.code-head{display:flex;align-items:center;justify-content:space-between;padding:6px 8px 6px 14px;border-bottom:1px solid var(--border);font-size:12px;color:var(--text-3)}.code pre,pre.code{margin:0;padding:14px 16px;overflow:auto;font-size:12.5px;line-height:1.7;color:var(--text)}.code .tok-k{color:var(--c4)}.code .tok-s{color:var(--c2)}.code .tok-c{color:var(--text-3)}.code .tok-t{color:var(--c1)}.empty{text-align:center;padding:32px 16px}.empty-icon{width:48px;height:48px;margin:0 auto 12px;border-radius:12px;background:var(--surface-2);border:1px solid var(--border);display:grid;place-items:center;color:var(--text-3)}.empty-icon .icon{width:22px;height:22px}.empty h3{font-size:15px;font-weight:600}.empty p{color:var(--text-3);font-size:13px;margin:4px 0 16px}.divider{display:flex;align-items:center;gap:12px;color:var(--text-3);font-size:12.5px;margin:var(--s5) 0}.divider:before,.divider:after{content:"";flex:1;height:1px;background:var(--border)}.divider:empty{gap:0}.chart{position:relative;width:100%}.chart svg{width:100%;height:auto;overflow:visible}.chart .grid-line{stroke:var(--border);stroke-width:1}.chart .axis-text{fill:var(--text-3);font-size:11px;font-family:var(--font)}.chart .series-line{fill:none;stroke-width:2;stroke-linejoin:round;stroke-linecap:round}.chart .crosshair{stroke:var(--border-strong);stroke-width:1;stroke-dasharray:3 3}.chart .hover-dot{stroke:var(--surface);stroke-width:2}.chart-tip{position:absolute;pointer-events:none;z-index:10;min-width:120px;padding:8px 10px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);box-shadow:var(--shadow);font-size:12px;opacity:0;transition:opacity .12s}.chart-tip b{display:block;font-weight:600;margin-bottom:4px;color:var(--text)}.chart-tip div{display:flex;align-items:center;gap:6px;color:var(--text-2)}.chart-tip div span:last-child{margin-left:auto;padding-left:12px;color:var(--text);font-variant-numeric:tabular-nums;font-weight:500}.legend{display:flex;flex-wrap:wrap;gap:14px;font-size:12.5px;color:var(--text-2)}.legend span{display:inline-flex;align-items:center;gap:6px}.swatch-dot{width:8px;height:8px;border-radius:2px;flex:none}.menu.popover{width:min(300px,calc(100vw - 32px));max-height:none;padding:16px}.popover-head{display:flex;align-items:center;justify-content:space-between;margin:-4px 0 10px}.popover-head b{font-size:14px}.menu.popover.flush{padding:0}.menu.popover.flush .popover-head{padding:12px 16px;margin:0;border-bottom:1px solid var(--border)}.notice-item{display:flex;gap:10px;padding:12px 16px;border-bottom:1px solid var(--border);font-size:13px;transition:background .12s}.notice-item:last-child{border-bottom:0}.notice-item:hover{background:var(--surface-2)}.notice-item.unread{background:color-mix(in srgb,var(--primary) 5%,transparent)}.notice-item.unread:after{content:"";width:7px;height:7px;border-radius:50%;background:var(--primary);flex:none;margin-top:6px}.notice-item p{color:var(--text-2);flex:1}.notice-item small{display:block;color:var(--text-3);font-size:11.5px;margin-top:2px}.select-search{position:sticky;top:-5px;margin:-5px -5px 5px;padding:6px;background:var(--surface);border-bottom:1px solid var(--border);z-index:1}.select-search input{width:100%;height:30px;border:0;background:var(--surface-2);border-radius:6px;padding:0 10px;font-size:13px;outline:none}.select-empty{padding:14px;text-align:center;color:var(--text-3);font-size:13px}.select-trigger .sel-tags{display:flex;gap:4px;flex-wrap:nowrap;overflow:hidden;min-width:0}.select-trigger .sel-tags .badge{height:20px}.select[data-multiple] .menu-item .check{opacity:1;color:transparent;width:15px;height:15px;border:1.5px solid var(--border-strong);border-radius:4px;padding:1px;transition:all .15s}.select[data-multiple] .menu-item.selected .check{color:#fff;background:var(--primary);border-color:var(--primary)}.select[data-multiple] .menu-item .check{order:-1;margin-left:0}.datepicker{position:relative;width:100%}.datepicker .input{cursor:pointer}.dp-pop{position:absolute;z-index:85;top:calc(100% + 6px);left:0;width:284px;padding:12px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow);display:none;transform-origin:top left}.datepicker.open .dp-pop{display:block;animation:jsg-pop .16s var(--ease)}.dp-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.dp-head b{font-size:14px;font-weight:600;font-variant-numeric:tabular-nums}.dp-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;text-align:center}.dp-grid .wk{font-size:11.5px;color:var(--text-3);height:28px;line-height:28px}.dp-grid button{height:34px;border:0;background:none;border-radius:8px;font-size:13px;cursor:pointer;color:var(--text);font-variant-numeric:tabular-nums;transition:background .12s,color .12s}.dp-grid button:hover{background:var(--surface-2)}.dp-grid button.other{color:var(--text-3)}.dp-grid button.today{color:var(--primary);font-weight:600}.dp-grid button.selected{background:var(--primary);color:#fff;font-weight:600}.dp-grid button:disabled{color:var(--text-3);opacity:.4;cursor:not-allowed;background:none}.dp-foot{display:flex;justify-content:space-between;margin-top:8px;padding-top:8px;border-top:1px solid var(--border)}.overlay.cmdk-overlay{align-items:start;padding-top:12vh}.cmdk{width:100%;max-width:560px;background:var(--surface);border:1px solid var(--border);border-radius:16px;box-shadow:var(--shadow-lg);overflow:hidden;transform:scale(.97);transition:transform .2s var(--ease)}.overlay.open .cmdk{transform:none}.cmdk-input{display:flex;align-items:center;gap:10px;padding:0 16px;border-bottom:1px solid var(--border)}.cmdk-input .icon{color:var(--text-3);width:18px;height:18px}.cmdk-input input{flex:1;height:52px;border:0;background:none;outline:none;font-size:15px}.cmdk-list{max-height:min(380px,55vh);overflow-y:auto;padding:6px}.cmdk-group{padding:8px 10px 4px;font-size:11px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--text-3)}.cmdk-item{display:flex;align-items:center;gap:12px;width:100%;padding:9px 10px;border:0;background:none;border-radius:8px;font-size:14px;text-align:left;cursor:pointer;color:var(--text);text-decoration:none!important}.cmdk-item .icon{color:var(--text-2)}.cmdk-item .kbd{margin-left:auto}.cmdk-item.active{background:var(--surface-2)}.cmdk-item.active .icon{color:var(--primary)}.cmdk-empty{padding:32px;text-align:center;color:var(--text-3);font-size:13.5px}.cmdk-foot{display:flex;gap:16px;padding:8px 14px;border-top:1px solid var(--border);font-size:12px;color:var(--text-3);background:var(--surface-2)}.cmdk-foot span{display:inline-flex;align-items:center;gap:6px}@media (max-width:600px){.overlay.cmdk-overlay{padding-top:16px;align-items:start}.cmdk-foot{display:none}}.rating{display:inline-flex;gap:2px}.rating button{width:22px;height:22px;padding:0;border:0;background:none;cursor:pointer;color:var(--border-strong);transition:transform .12s,color .12s}.rating button .icon{width:100%;height:100%;fill:currentColor;stroke:currentColor;stroke-width:1}.rating button.on{color:#f5a524}.rating button:hover{transform:scale(1.12)}.rating[data-readonly] button{cursor:default;pointer-events:none}.rating.sm button{width:15px;height:15px}.otp{display:flex;gap:8px}.otp input{width:46px;height:52px;text-align:center;font:600 20px var(--mono);border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--surface);transition:border-color .15s,box-shadow .15s,transform .15s}.otp input:focus{outline:none;border-color:var(--primary);box-shadow:var(--ring)}.otp input.filled{border-color:var(--text-3)}.otp.error input{border-color:var(--danger);animation:jsg-shake .35s}.otp.success input{border-color:var(--success)}.otp .sep{align-self:center;color:var(--text-3)}@keyframes jsg-shake{20%,60%{transform:translate(-4px)}40%,80%{transform:translate(4px)}}@media (max-width:400px){.otp{gap:5px}.otp input{width:40px;height:46px;font-size:18px}}.countdown{display:inline-flex;align-items:center;gap:6px;font-variant-numeric:tabular-nums}.countdown span{min-width:34px;height:34px;padding:0 6px;display:grid;place-items:center;border-radius:8px;background:var(--text);color:var(--bg);font:600 15px var(--mono)}.countdown i{font-style:normal;color:var(--text-3);font-weight:600}.countdown.soft span{background:var(--surface-2);color:var(--text);border:1px solid var(--border)}.carousel{position:relative;border-radius:var(--radius-lg);overflow:hidden}.carousel-track{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;scroll-behavior:smooth;scrollbar-width:none}.carousel-track::-webkit-scrollbar{display:none}.carousel-track>*{flex:0 0 100%;scroll-snap-align:start}.carousel.multi .carousel-track{gap:16px}.carousel.multi .carousel-track>*{flex-basis:calc((100% - 32px)/3)}@media (max-width:768px){.carousel.multi .carousel-track>*{flex-basis:80%}}.carousel-btn{position:absolute;top:50%;transform:translateY(-50%);width:36px;height:36px;border-radius:50%;border:1px solid var(--border);background:color-mix(in srgb,var(--surface) 88%,transparent);backdrop-filter:blur(8px);color:var(--text);display:grid;place-items:center;cursor:pointer;opacity:0;transition:opacity .2s,background .15s;box-shadow:var(--shadow-sm);z-index:2}.carousel:hover .carousel-btn,.carousel-btn:focus-visible{opacity:1}.carousel-btn:hover{background:var(--surface)}.carousel-btn:disabled{opacity:0!important;pointer-events:none}.carousel-btn.prev{left:12px}.carousel-btn.next{right:12px}.carousel-dots{position:absolute;bottom:12px;left:0;right:0;display:flex;justify-content:center;gap:6px;z-index:2}.carousel-dots button{width:6px;height:6px;padding:0;border:0;border-radius:99px;background:#ffffff8c;cursor:pointer;transition:width .25s var(--ease),background .2s}.carousel-dots button.active{width:18px;background:#fff}.carousel.multi .carousel-dots{position:static;margin-top:14px}.carousel.multi .carousel-dots button{background:var(--border-strong)}.carousel.multi .carousel-dots button.active{background:var(--text)}@media (hover:none){.carousel-btn{display:none}}.lightbox{position:fixed;inset:0;z-index:150;background:#08080aeb;display:grid;place-items:center;opacity:0;visibility:hidden;transition:opacity .2s,visibility .2s}.lightbox.open{opacity:1;visibility:visible}.lightbox img{max-width:min(92vw,1200px);max-height:82vh;border-radius:var(--radius);box-shadow:0 30px 60px #00000080;transform:scale(.96);transition:transform .25s var(--ease),opacity .2s}.lightbox.open img{transform:none}.lightbox .lb-btn{position:absolute;width:42px;height:42px;border-radius:50%;border:0;background:#ffffff1a;color:#fff;display:grid;place-items:center;cursor:pointer;transition:background .15s}.lightbox .lb-btn:hover{background:#fff3}.lightbox .lb-close{top:16px;right:16px}.lightbox .lb-prev{left:16px;top:50%;transform:translateY(-50%)}.lightbox .lb-next{right:16px;top:50%;transform:translateY(-50%)}.lightbox .lb-cap{position:absolute;bottom:20px;left:0;right:0;text-align:center;color:#fffc;font-size:13px}[data-lightbox]{cursor:zoom-in}.pill-group{display:flex;flex-wrap:wrap;gap:8px}.pill{position:relative}.pill input{position:absolute;opacity:0;pointer-events:none}.pill span{display:inline-flex;align-items:center;justify-content:center;min-width:44px;height:34px;padding:0 12px;border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface);font-size:13px;cursor:pointer;transition:all .15s}.pill span:hover{border-color:var(--text-3)}.pill input:checked+span{border-color:var(--text);box-shadow:inset 0 0 0 1px var(--text);font-weight:500}.pill input:focus-visible+span{box-shadow:var(--ring)}.pill input:disabled+span{opacity:.4;text-decoration:line-through;cursor:not-allowed}.swatches{display:flex;flex-wrap:wrap;gap:10px}.swatch-opt{position:relative;cursor:pointer}.swatch-opt input{position:absolute;opacity:0;pointer-events:none}.swatch-opt span{display:block;width:28px;height:28px;border-radius:50%;background:var(--c,#999);box-shadow:inset 0 0 0 1px #0000001a;transition:box-shadow .15s,transform .15s}.swatch-opt:hover span{transform:scale(1.08)}.swatch-opt input:checked+span{box-shadow:0 0 0 2px var(--surface),0 0 0 4px var(--text)}.swatch-opt input:focus-visible+span{box-shadow:0 0 0 2px var(--surface),0 0 0 4px var(--primary)}.menu.context{position:fixed;top:0;left:0;min-width:200px;transform-origin:top left}.menu.context.show{display:block;animation:jsg-pop .12s var(--ease)}.ctx-area{display:grid;place-items:center;height:140px;border:1.5px dashed var(--border-strong);border-radius:var(--radius-lg);color:var(--text-3);font-size:13px;user-select:none}.backtop{position:fixed;right:20px;bottom:20px;z-index:90;width:40px;height:40px;border-radius:50%;border:1px solid var(--border);background:var(--surface);color:var(--text-2);box-shadow:var(--shadow);display:grid;place-items:center;cursor:pointer;opacity:0;visibility:hidden;transform:translateY(8px);transition:all .25s var(--ease)}.backtop.show{opacity:1;visibility:visible;transform:none}@media (max-width:768px){.backtop{right:14px;bottom:14px;width:38px;height:38px}body:has(.backtop) .footer{padding-bottom:64px}}.backtop:hover{color:var(--text);transform:translateY(-2px)}.sparkline{display:block;width:100%;height:36px;overflow:visible}.sparkline path.line{fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.toast .t-action{border:0;background:none;color:var(--primary);font-weight:600;font-size:13px;cursor:pointer;padding:2px 6px;border-radius:4px;margin-left:auto}.toast .t-action:hover{background:var(--primary-soft)}.toast .t-action+.t-close{margin-left:0}.product{display:flex;flex-direction:column}.product-media{position:relative;aspect-ratio:1;background:var(--surface-2);overflow:hidden}.product-media>*:first-child{width:100%;height:100%;object-fit:cover;transition:transform .5s var(--ease)}.product:hover .product-media>*:first-child{transform:scale(1.04)}.product-media .badge{position:absolute;top:10px;left:10px}.product-media .fav{position:absolute;top:8px;right:8px;opacity:0;transition:opacity .2s}.product:hover .fav,.fav.active{opacity:1}@media (hover:none){.product-media .fav{opacity:1}}.fav.active{color:var(--danger)}.fav.active .icon{fill:currentColor}.product-body{padding:14px 16px 16px;display:flex;flex-direction:column;gap:4px;flex:1}.product-body h3{font-size:14px;font-weight:500}.product-price{display:flex;align-items:baseline;gap:8px;margin-top:auto;padding-top:6px}.product-price b{font-size:16px;font-weight:650}.product-price s{color:var(--text-3);font-size:12.5px}.gallery{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.gallery>*{border-radius:var(--radius);overflow:hidden;aspect-ratio:4/3;background:var(--surface-2);border:1px solid var(--border)}.gallery img{width:100%;height:100%;object-fit:cover;transition:transform .4s var(--ease)}.gallery>*:hover img{transform:scale(1.04)}@media (max-width:768px){.gallery{grid-template-columns:repeat(2,1fr)}}.cart-item{display:flex;gap:12px;padding:14px 0;border-bottom:1px solid var(--border)}.cart-item .thumb{width:64px;height:64px;border-radius:var(--radius-sm);flex:none;background:var(--surface-2);overflow:hidden}.cart-item .thumb>*{width:100%;height:100%;object-fit:cover}.big-num{font-size:clamp(80px,18vw,160px);font-weight:750;letter-spacing:-.06em;line-height:1}.brand-logo{width:28px;height:28px;object-fit:contain;flex:none;transition:transform .5s var(--ease)}.brand:hover .brand-logo{transform:rotate(-8deg) scale(1.06)}.brand-logo.lg{width:44px;height:44px}.brand-logo.xl{width:64px;height:64px}body.jsg-enter{animation:jsg-page-in .5s var(--ease) both}@keyframes jsg-page-in{0%{opacity:0}}.reveal.from-left{transform:translate(-24px)}.reveal.from-right{transform:translate(24px)}.reveal.scale{transform:scale(.94)}.reveal.blur{filter:blur(8px);transform:translateY(10px);transition:opacity .7s var(--ease),transform .7s var(--ease),filter .7s var(--ease)}.reveal.in.from-left,.reveal.in.from-right,.reveal.in.scale{transform:none}.reveal.in.blur{filter:none;transform:none}.stagger>*{opacity:0}.stagger.in>*{opacity:1;animation:jsg-rise .6s var(--ease) backwards}@keyframes jsg-rise{0%{opacity:0;transform:translateY(16px)}}.stagger.in>*:nth-child(1){animation-delay:.03s}.stagger.in>*:nth-child(2){animation-delay:.09s}.stagger.in>*:nth-child(3){animation-delay:.15s}.stagger.in>*:nth-child(4){animation-delay:.21s}.stagger.in>*:nth-child(5){animation-delay:.27s}.stagger.in>*:nth-child(6){animation-delay:.33s}.stagger.in>*:nth-child(7){animation-delay:.39s}.stagger.in>*:nth-child(8){animation-delay:.45s}.stagger.in>*:nth-child(9){animation-delay:.51s}.stagger.in>*:nth-child(10){animation-delay:.57s}.stagger.in>*:nth-child(n+11){animation-delay:.63s}.split-word{display:inline-block;opacity:0;transform:translateY(.5em) rotate(2deg);filter:blur(4px);transition:opacity .6s var(--ease),transform .6s var(--ease),filter .6s var(--ease)}.split-in .split-word{opacity:1;transform:none;filter:none}.btn{position:relative}.ripple-box{position:absolute;inset:-1px;border-radius:inherit;overflow:hidden;pointer-events:none}.ripple{position:absolute;border-radius:50%;background:currentColor;opacity:.2;transform:scale(0);pointer-events:none;animation:jsg-ripple .6s var(--ease) forwards}@keyframes jsg-ripple{to{transform:scale(1);opacity:0}}.btn-primary:hover:not(:disabled){box-shadow:0 6px 18px -6px color-mix(in srgb,var(--primary) 70%,transparent),inset 0 1px #ffffff1f;transform:translateY(-1px)}.btn-primary:active:not(:disabled){transform:scale(.97)}.btn .icon{transition:transform .25s var(--ease)}.btn:hover .icon-shift,.btn:hover [data-icon-shift]{transform:translate(3px)}.link-anim{background:linear-gradient(currentColor,currentColor) left bottom/0 1px no-repeat;transition:background-size .3s var(--ease);text-decoration:none!important}.link-anim:hover{background-size:100% 1px}.card.lift{transition:transform .35s var(--ease),box-shadow .35s var(--ease),border-color .2s}.card.lift:hover{transform:translateY(-4px);box-shadow:var(--shadow-lg);border-color:var(--border-strong)}[data-spotlight]{position:relative;isolation:isolate}[data-spotlight]:before{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;z-index:-1;opacity:0;transition:opacity .3s;background:radial-gradient(360px circle at var(--mx,50%) var(--my,50%),color-mix(in srgb,var(--primary) 12%,transparent),transparent 60%)}[data-spotlight]:hover:before{opacity:1}[data-tilt]{transform-style:preserve-3d;transition:transform .5s var(--ease);will-change:transform}.glow-border{position:relative;isolation:isolate}.glow-border:after{content:"";position:absolute;inset:0;border-radius:inherit;padding:1px;z-index:-1;background:conic-gradient(from var(--ga,0deg),transparent 0 60%,var(--primary),var(--accent),transparent 100%);-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude;animation:jsg-spin-angle 4s linear infinite}@property --ga{syntax:"<angle>";initial-value:0deg;inherits:false}@keyframes jsg-spin-angle{to{--ga:360deg}}.blobs{position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:0}.blobs i{position:absolute;border-radius:50%;filter:blur(60px);opacity:.55;animation:jsg-blob 16s ease-in-out infinite alternate}.blobs i:nth-child(1){width:420px;height:420px;background:var(--primary);top:-120px;left:-80px}.blobs i:nth-child(2){width:360px;height:360px;background:var(--accent);bottom:-120px;right:-60px;animation-duration:19s;animation-delay:-4s}.blobs i:nth-child(3){width:260px;height:260px;background:#22d3ee;top:40%;left:45%;animation-duration:22s;animation-delay:-9s;opacity:.35}@keyframes jsg-blob{0%{transform:translate(0) scale(1)}33%{transform:translate(60px,40px) scale(1.12)}66%{transform:translate(-40px,70px) scale(.92)}to{transform:translate(30px,-30px) scale(1.05)}}.float{animation:jsg-float 6s ease-in-out infinite}@keyframes jsg-float{50%{transform:translateY(-10px)}}.float-slow{animation:jsg-float 9s ease-in-out infinite}.breathe{animation:jsg-breathe 3s ease-in-out infinite}@keyframes jsg-breathe{50%{transform:scale(1.04);opacity:.85}}.wave{display:inline-block;transform-origin:70% 70%;animation:jsg-wave 2.4s ease-in-out infinite}@keyframes jsg-wave{0%,60%,to{transform:rotate(0)}10%,30%{transform:rotate(14deg)}20%{transform:rotate(-8deg)}40%{transform:rotate(-4deg)}50%{transform:rotate(10deg)}}.bounce-in{animation:jsg-bounce-in .5s cubic-bezier(.3,1.6,.5,1)}@keyframes jsg-bounce-in{0%{transform:scale(.4);opacity:0}to{transform:scale(1);opacity:1}}.pop{animation:jsg-pop-badge .4s cubic-bezier(.3,1.8,.5,1)}@keyframes jsg-pop-badge{40%{transform:scale(1.35)}}.shake{animation:jsg-shake .4s}.marquee{overflow:hidden;-webkit-mask-image:linear-gradient(90deg,transparent,#000 12%,#000 88%,transparent);mask-image:linear-gradient(90deg,transparent,#000 12%,#000 88%,transparent)}.marquee-track{display:flex;gap:56px;width:max-content;animation:jsg-marquee var(--speed,28s) linear infinite}.marquee:hover .marquee-track{animation-play-state:paused}@keyframes jsg-marquee{to{transform:translate(calc(-50% - 28px))}}.typewriter:after{content:"";display:inline-block;width:2px;height:1em;margin-left:3px;vertical-align:-.12em;background:currentColor;animation:jsg-caret 1s steps(1) infinite}@keyframes jsg-caret{50%{opacity:0}}.check-anim{width:64px;height:64px;display:block}.check-anim circle{fill:none;stroke:var(--success);stroke-width:3;stroke-dasharray:166;stroke-dashoffset:166;animation:jsg-draw .6s var(--ease) forwards}.check-anim path{fill:none;stroke:var(--success);stroke-width:3.5;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:48;stroke-dashoffset:48;animation:jsg-draw .35s .5s var(--ease) forwards}@keyframes jsg-draw{to{stroke-dashoffset:0}}.chart .series-line.draw{stroke-dasharray:var(--len);stroke-dashoffset:var(--len);animation:jsg-draw 1.2s var(--ease) forwards}.chart .area.draw{opacity:0;animation:jsg-fade-in .8s .5s var(--ease) forwards}.chart path[data-i].draw{transform-box:fill-box;transform-origin:bottom;transform:scaleY(0);animation:jsg-grow .7s var(--ease) forwards}@keyframes jsg-grow{to{transform:scaleY(1)}}@keyframes jsg-fade-in{to{opacity:1}}.fly-dot{position:fixed;z-index:300;width:14px;height:14px;border-radius:50%;background:var(--primary);box-shadow:0 0 0 4px var(--primary-soft);pointer-events:none}.input-wrap>.icon{transition:color .2s}.input-wrap:focus-within>.icon{color:var(--primary)}.fade-in{animation:jsg-fade-in .4s var(--ease) both}.gradient-text.flow{background-size:200% auto;background-image:linear-gradient(120deg,var(--primary),var(--accent),#22d3ee,var(--primary));animation:jsg-flow 6s linear infinite}@keyframes jsg-flow{to{background-position:200% center}}@media (prefers-reduced-motion:reduce){.stagger>*,.split-word{opacity:1!important;transform:none!important;filter:none!important}.blobs i,.marquee-track,.float,.float-slow,.breathe,.wave,.gradient-text.flow,.glow-border:after{animation:none!important}[data-tilt]{transform:none!important}}.reveal{opacity:0;transform:translateY(16px);transition:opacity .6s var(--ease),transform .6s var(--ease)}.reveal.in{opacity:1;transform:none}@media (prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important;scroll-behavior:auto!important}.reveal{opacity:1;transform:none}}.chart.paused .draw{animation-play-state:paused}.stagger .progress>i{animation:jsg-bar 1.1s .25s var(--ease) both;animation-play-state:paused}.stagger.in .progress>i{animation-play-state:running}@keyframes jsg-bar{0%{width:0}}
