:root{--bg: #0e1117;--bg-2: #0a0d12;--panel: #1e2430;--surface: #1e2430;--surface-2: #282f3d;--card: #1e2430;--card-border: rgba(255, 255, 255, .13);--sidebar: #090c11;--sidebar-fg: #9aa3b7;--sidebar-active: #006ee6;--sidebar-fg-strong: #e8edf5;--fg: #eef2f8;--muted: #9aa3b7;--border: rgba(255, 255, 255, .12);--accent: #2494ff;--accent-2: #4da3ff;--accent-solid: #006ee6;--accent-solid-hover: #0058c0;--cta: #22c55e;--ok: #22c55e;--warn: #ffd700;--danger: #ff4d4d;--ring: #2494ff;--topbar-bg: rgba(14, 17, 23, .85);--topbar-line: rgba(255, 255, 255, .08);--shadow: 0 24px 60px -20px rgba(0, 0, 0, .9);--shadow-sm: 0 8px 24px -12px rgba(0, 0, 0, .8);--glow: 0 0 14px -2px color-mix(in srgb, var(--accent) 55%, transparent);--glow-cta: 0 0 14px -2px color-mix(in srgb, var(--cta) 50%, transparent);--violet: #a855f7;--violet-ink: #c084fc;--online: #34d399;--dot-off: #6b7488;--accent-ink: #4da3ff;--ok-ink: #22c55e;--warn-ink: #ffd700;--danger-ink: #ff6b6b;--avatar-guest-bg: #475569;--font-sans: "Inter", -apple-system, BlinkMacSystem, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", system-ui, sans-serif;--font-mono: "JetBrains Mono", "SFMono-Regular", Consolas, "Liberation Mono", monospace;--sp-1: 1px;--sp-2: 2px;--sp-3: 3px;--sp-4: 4px;--sp-6: 6px;--sp-8: 8px;--sp-10: 10px;--sp-12: 12px;--sp-16: 16px;--sp-24: 24px;--sp-32: 32px;--sp-48: 48px;--sp-64: 64px;--s-xs: var(--sp-4);--s-sm: var(--sp-8);--s-md: var(--sp-16);--s-lg: var(--sp-24);--s-xl: var(--sp-32);--s-2xl: var(--sp-48);--s-3xl: var(--sp-64);--t-2xs: 10px;--t-xs: 11px;--t-sm: 12px;--t-base: 13px;--t-md: 14px;--t-lg: 16px;--t-xl: 20px;--t-2xl: 24px;--ico-sm: 14px;--ico-md: 18px;--ico-lg: 22px;--r-2xs: 4px;--r-xs: 6px;--r-sm: 8px;--r-md: 12px;--r-lg: 16px;--r-xl: 22px;--r-pill: 999px;--titlebar-h: 34px;--ui-scale: 1}[data-theme=light]{--bg: #f1f5f9;--bg-2: #e8edf6;--panel: #ffffff;--surface: #ffffff;--surface-2: #f1f5f9;--card: #ffffff;--card-border: rgba(51, 65, 85, .18);--sidebar: #0f172a;--sidebar-fg: #94a3b8;--sidebar-active: #2563eb;--fg: #0f172a;--muted: #64748b;--border: rgba(51, 65, 85, .14);--accent: #2563eb;--accent-2: #3b82f6;--accent-solid: #2563eb;--accent-solid-hover: #1d4ed8;--cta: #16a34a;--ok: #16a34a;--warn: #b45309;--danger: #dc2626;--ring: #2563eb;--topbar-bg: rgba(255, 255, 255, .78);--topbar-line: rgba(51, 65, 85, .12);--shadow: 0 20px 50px -24px rgba(15, 23, 42, .35);--shadow-sm: 0 6px 18px -10px rgba(15, 23, 42, .25);--glow: 0 0 0 0 transparent;--glow-cta: 0 0 0 0 transparent;--violet: #9333ea;--violet-ink: #7e22ce;--online: #10b981;--dot-off: #94a3b8;--accent-ink: #1d4ed8;--ok-ink: #166534;--warn-ink: #92400e;--danger-ink: #b91c1c;--avatar-guest-bg: #526075}*{box-sizing:border-box;margin:0;padding:0}button{outline:none!important;background:transparent;border:none;box-shadow:none!important;-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer}button:focus,button:focus-visible,button:active{outline:none!important;box-shadow:none!important}html,body,#root{height:100%}#root{display:flex;flex-direction:column}body{font-family:var(--font-sans);background:var(--bg);color:var(--fg);font-size:var(--t-md);transition:background .25s,color .25s;color-scheme:dark}[data-theme=light] body{color-scheme:light}.titlebar{height:var(--titlebar-h);flex:none;display:flex;align-items:stretch;background:var(--topbar-bg);border-bottom:1px solid var(--topbar-line);backdrop-filter:blur(20px) saturate(140%);-webkit-backdrop-filter:blur(20px) saturate(140%);-webkit-user-select:none;user-select:none;position:relative;z-index:400}.titlebar.booting .tb-actions{visibility:hidden}.titlebar .tb-brand{display:flex;align-items:center;gap:var(--s-sm);padding:0 var(--s-md);flex:none}.titlebar .tb-mark{width:12px;height:12px;border-radius:var(--r-2xs);background:linear-gradient(135deg,var(--accent-2),var(--accent));box-shadow:var(--glow);flex:none}.titlebar .tb-name{font-size:var(--t-sm);font-weight:600;color:var(--fg);letter-spacing:.01em}.titlebar .tb-sub{font-size:var(--t-xs);color:var(--muted)}.titlebar .tb-drag{flex:1;min-width:0;-webkit-app-region:drag}.titlebar .tb-actions{display:flex;align-items:stretch;flex:none;-webkit-app-region:no-drag}.titlebar .tb-btn{width:46px;display:grid;place-items:center;color:var(--muted);transition:background .12s,color .12s}.titlebar .tb-btn:hover{background:#ffffff17;color:var(--fg)}.titlebar .tb-btn:active{background:#ffffff24}.titlebar .tb-btn:focus-visible{outline:2px solid var(--ring);outline-offset:-2px}.titlebar .tb-close:hover{background:var(--danger);color:#fff}[data-theme=light] .titlebar .tb-btn:hover{background:#0f172a12}[data-theme=light] .titlebar .tb-close:hover{background:var(--danger);color:#fff}.app-shell{display:flex;flex:1;min-height:0;overflow:hidden}.sidebar{width:216px;min-width:216px;background:var(--sidebar);border-right:1px solid rgba(148,163,184,.1);display:flex;flex-direction:column;padding:var(--s-md) var(--sp-10);-webkit-user-select:none;user-select:none;transition:width .18s,min-width .18s}.sidebar.mini{width:60px;min-width:60px;padding:var(--s-md) var(--sp-8)}.sidebar.mini .sidebar-brand{justify-content:center;padding:var(--s-sm) 0 var(--s-md)}.sidebar.mini .nav-item{justify-content:center;padding:var(--sp-10) 0}.sidebar.mini .sidebar-footer{display:flex;justify-content:center}.sidebar.mini .login-status{padding:var(--s-sm) 0;justify-content:center}.sidebar-top{display:flex;padding:0 var(--s-xs) var(--s-sm)}.sidebar.mini .sidebar-top{justify-content:center;padding:0 0 var(--s-sm);gap:var(--s-xs)}.sidebar-toggle{display:grid;place-items:center;width:32px;height:32px;border-radius:var(--r-sm);color:var(--sidebar-fg);cursor:pointer;transition:background .15s,color .15s}.sidebar-toggle:hover{background:#ffffff14;color:#fff}.sidebar-toggle:focus-visible{outline:2px solid var(--ring);outline-offset:2px}.sidebar-restore{position:absolute;top:10px;left:12px;z-index:50}.sidebar-restore .sidebar-toggle{color:var(--muted)}.sidebar-restore .sidebar-toggle:hover{background:color-mix(in srgb,var(--accent) 14%,transparent);color:var(--fg)}.sidebar-brand{display:flex;align-items:center;gap:var(--sp-10);color:#fff;font-weight:700;font-size:var(--t-lg);letter-spacing:.01em;padding:var(--s-sm) var(--sp-10) var(--s-lg)}.sidebar-brand .logo{width:32px;height:32px;border-radius:var(--r-md);background:linear-gradient(135deg,var(--accent-2),var(--violet));box-shadow:0 6px 18px -6px color-mix(in srgb,var(--accent) 70%,transparent);display:grid;place-items:center;font-size:var(--t-lg)}.sidebar-group{font-size:var(--t-2xs);font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:#94a3b8b3;padding:var(--s-md) var(--sp-12) var(--s-xs)}.nav-item{display:flex;align-items:center;gap:var(--sp-12);padding:var(--sp-10) var(--sp-12);margin:var(--sp-2) 0;border-radius:var(--r-md);cursor:pointer;color:var(--sidebar-fg);font-size:var(--t-md);transition:background .15s,color .15s;position:relative}.nav-item:hover{background:#ffffff0f;color:var(--sidebar-fg-strong)}.nav-item.active{background:var(--sidebar-active);color:#fff;box-shadow:0 8px 20px -10px var(--sidebar-active)}.nav-item svg{width:18px;height:18px;flex:none}.nav-item.active:before{content:"";position:absolute;left:-8px;top:50%;transform:translateY(-50%);width:3px;height:18px;border-radius:var(--r-pill);background:var(--accent-2)}.sidebar-footer{margin-top:auto;border-top:1px solid rgba(255,255,255,.07);padding-top:var(--s-md)}.login-status{display:flex;align-items:center;gap:var(--sp-10);padding:var(--s-sm) var(--sp-10);border-radius:var(--r-md);cursor:pointer;color:var(--sidebar-fg);transition:background .15s}.login-status:hover{background:#ffffff0f}.login-status .avatar{width:32px;height:32px;border-radius:50%;background:linear-gradient(135deg,var(--online),var(--cta));display:grid;place-items:center;color:#fff;font-weight:700;font-size:var(--t-md);flex:none}.login-status .avatar.guest{background:var(--avatar-guest-bg)}.login-status .meta{overflow:hidden}.login-status .name{color:var(--sidebar-fg-strong);font-size:var(--t-base);white-space:nowrap}.login-status .sub{font-size:var(--t-xs);white-space:nowrap}.dot{display:inline-block;width:7px;height:7px;border-radius:50%;margin-right:var(--s-xs)}.dot.on{background:var(--online)}.dot.off{background:var(--dot-off)}.main{flex:1;overflow-y:auto;overflow-x:hidden;padding:0;display:flex;flex-direction:column;background:transparent;position:relative}.main>.panel,.main>.market-grid{flex:none}.main>.panel:first-child{margin-top:var(--s-lg)}.main>.panel{margin:0 0 var(--s-md)}.main>.market-grid{padding:0 0 var(--s-lg)}.tab-row{display:flex;gap:var(--s-sm);margin:0 0 var(--s-md);flex:none;flex-wrap:wrap}.main{padding:0 var(--s-xl)}.desktop-viewport{margin:0 calc(-1 * var(--s-xl))}.main>.panel,.main>.market-grid,.main>.tab-row{width:100%;max-width:1180px;margin-left:auto;margin-right:auto}.layout-bar{display:flex;gap:var(--sp-8);align-items:center;margin:0 var(--sp-24) var(--sp-12);flex:none}.desktop-viewport{flex:1;position:relative;overflow:hidden;background:transparent;-webkit-user-select:none;user-select:none;cursor:grab}.desktop-viewport.panning{cursor:grabbing}.desktop-canvas{position:absolute;top:0;left:0;background:transparent;-webkit-user-select:none;user-select:none;will-change:transform}.plugin-card{position:absolute;background:var(--card);border:calc(2px / var(--ui-scale, 1)) solid var(--card-border);border-radius:var(--r-lg);overflow:clip;display:flex;flex-direction:column;box-shadow:0 2px 12px #0000000f;transition:box-shadow .2s,border-color .2s,opacity .15s;-webkit-user-select:none;user-select:none}.plugin-card:hover{box-shadow:0 6px 24px #00000080;border-color:var(--accent)}.plugin-card.drag-over{border-color:var(--accent);border-style:dashed}.plugin-card.dragging{transition:none}.plugin-card.focused{box-shadow:var(--glow),var(--shadow-sm);border-color:var(--accent)}.card-head{display:flex;align-items:center;gap:var(--sp-8);padding:var(--sp-4) var(--sp-4) var(--sp-4) var(--sp-12);border-bottom:1px solid var(--border);font-size:var(--t-sm);color:var(--muted);flex:none;cursor:grab;background:var(--panel);position:relative;z-index:6}.card-head:active{cursor:grabbing}.card-head-ghost{position:absolute;top:0;left:0;right:0;height:34px;background:transparent;border-bottom:none;padding:0;z-index:5}.card-head .icon{display:inline-block}.card-head .title{display:inline-block;font-weight:600;color:var(--fg)}.card-head .badge{display:none}.card-head .spacer{flex:1 1 auto;min-width:0}.card-head button{outline:none!important;background:transparent!important;border:none!important;box-shadow:none!important;text-shadow:none!important;color:var(--muted);font-size:var(--t-md);cursor:pointer;display:inline-grid;place-items:center;min-width:24px;min-height:24px;padding:var(--sp-2) var(--sp-4);border-radius:var(--r-2xs);line-height:1;-webkit-appearance:none;-moz-appearance:none;appearance:none}.card-head button:hover{background:#ffffff14}.card-head button:focus,.card-head button:focus-visible,.card-head button:active{outline:none!important;box-shadow:none!important}.card-head .card-close{margin-left:var(--sp-2);margin-right:var(--sp-2)}.card-head .card-close:hover{background:#e2545c29;color:var(--danger)}.card-head .card-dup:hover{background:color-mix(in srgb,var(--accent) 16%,transparent);color:var(--accent)}.card-head .win-ordinal{flex:none;padding:0 var(--sp-4);border-radius:var(--r-xs);font-size:var(--t-2xs);font-weight:700;line-height:1.6;background:color-mix(in srgb,var(--accent) 16%,transparent);color:var(--accent)}.card-expand{position:absolute;top:4px;right:4px;z-index:6;width:24px;height:24px;display:grid;place-items:center;border-radius:var(--r-xs);color:var(--muted);font-size:var(--t-base);line-height:1;cursor:pointer;background:var(--panel);opacity:.55;transition:opacity .15s,background .15s,color .15s}.card-expand:hover{opacity:1;background:color-mix(in srgb,var(--accent) 14%,transparent);color:var(--accent)}.card-expand:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.card-divider{height:1px;background:var(--border);flex:none}.card-body{flex:1;overflow:hidden}.card-body iframe{display:block;width:100%;height:100%;border:none}.gear{position:relative;cursor:pointer;padding:var(--sp-2) var(--sp-6);border-radius:var(--r-xs);font-size:var(--t-md);transition:background .15s;outline:none;display:inline-grid;place-items:center;min-width:24px;min-height:24px;box-sizing:border-box}.gear:hover{background:color-mix(in srgb,var(--accent) 14%,transparent)}.settings-panel{position:absolute;z-index:200;padding:var(--sp-16);background:var(--panel);border:1px solid var(--border);border-radius:var(--r-md);box-shadow:var(--shadow-sm);display:flex;flex-direction:column;gap:var(--sp-12)}.settings-panel{position:fixed;z-index:300;overflow-y:auto;overscroll-behavior:contain}.settings-panel h4{font-size:var(--t-base);font-weight:700;color:var(--fg);border-bottom:1px solid var(--border);padding-bottom:var(--sp-6);margin:0}.settings-panel .setting-row{display:flex;align-items:center;justify-content:space-between;gap:var(--s-sm)}.settings-panel .setting-label{font-size:var(--t-sm);color:var(--muted);white-space:nowrap;flex:none}.settings-panel .setting-hint{font-size:var(--t-xs);color:var(--muted);text-align:center}.settings-panel .setting-val{font-size:var(--t-sm);color:var(--fg);font-weight:600}.settings-panel select,.settings-panel input[type=number],.settings-panel input[type=color],.settings-panel input[type=text]{font-size:var(--t-sm);padding:var(--sp-4) var(--sp-8);border-radius:var(--r-xs);border:1px solid var(--border);background:var(--panel);color:var(--fg);width:100%;min-height:24px;box-sizing:border-box}.settings-panel input[type=color]{width:48px;height:26px;padding:var(--sp-2);flex:none}:root{--corner-right: 22px;--corner-bottom: 22px;--corner-slot: 62px}.settings-panel .palette-row{flex-direction:column;align-items:stretch;gap:var(--sp-6)}.settings-panel .palette-row .setting-label{text-align:left}.palette-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--sp-6);width:100%}.palette-grid:not(.paired){grid-template-columns:repeat(8,1fr)}.palette-pair{position:relative;display:flex;align-items:stretch;height:34px;min-width:0;padding:0;border-radius:var(--r-xs);overflow:hidden;cursor:pointer;border:1px solid rgba(0,0,0,.2);transition:transform .12s,box-shadow .12s}[data-theme=dark] .palette-pair{border-color:#ffffff38}.palette-pair:hover{transform:translateY(-1px);box-shadow:0 3px 10px #00000038}.palette-pair.active{box-shadow:0 0 0 2px var(--panel),0 0 0 4px var(--accent)}.palette-pair:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.palette-half{flex:1 1 0;min-width:0;display:grid;place-items:center}.palette-divider{flex:none;width:1px;background:#80808059}.palette-sample{font-size:var(--t-xs);font-weight:700;line-height:1;-webkit-user-select:none;user-select:none}.palette-pair .palette-half:only-child{flex:1 1 100%}.font-select{position:relative;width:100%}.font-trigger{width:100%;display:flex;align-items:center;justify-content:space-between;gap:var(--sp-6);font-size:var(--t-sm);padding:var(--sp-4) var(--sp-8);border-radius:var(--r-xs);border:1px solid var(--border);background:var(--panel);color:var(--fg);cursor:pointer;text-align:left}.font-trigger-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.font-caret{color:var(--muted);flex:none}.font-menu{position:absolute;top:calc(100% + 4px);left:0;right:0;z-index:300;max-height:260px;overflow-y:auto;background:var(--panel);border:1px solid var(--border);border-radius:var(--r-sm);box-shadow:0 8px 28px #00000038;padding:var(--sp-4);display:flex;flex-direction:column;gap:var(--sp-1)}.font-option{display:flex;align-items:center;gap:var(--sp-8);padding:var(--sp-4) var(--sp-6);border-radius:var(--r-xs);cursor:pointer;text-align:left;background:transparent;border:none;color:var(--fg)}.font-option:hover{background:color-mix(in srgb,var(--accent) 10%,transparent)}.font-option.active{background:color-mix(in srgb,var(--accent) 14%,transparent)}.font-option-name{flex:none;font-size:var(--t-sm)}.font-option-sample{flex:1;min-width:0;font-size:var(--t-sm);color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.font-option-check{flex:none;color:var(--accent);font-size:var(--t-sm);font-weight:700}.settings-panel .btn-row{display:flex;gap:var(--s-sm);margin-top:var(--sp-4);flex-wrap:wrap}.settings-panel .btn-row button{flex:1 1 auto;min-width:96px;padding:var(--sp-6) var(--sp-10);border-radius:var(--r-sm);font-size:var(--t-sm);white-space:nowrap;border:1px solid var(--border);background:var(--panel);color:var(--fg);cursor:pointer;outline:none}.btn-row button:focus{outline:none}.settings-panel .btn-row button.primary{background:var(--accent-solid);color:#fff;border-color:var(--accent-solid)}.view-switch{display:flex;gap:var(--sp-4);padding:var(--sp-3);background:var(--panel);border:1px solid var(--border);border-radius:var(--r-sm)}.view-switch button{flex:1;padding:var(--sp-6) var(--sp-8);border:0;border-radius:var(--r-sm);cursor:pointer;font:inherit;font-size:var(--t-sm);white-space:nowrap;background:transparent;color:var(--muted);transition:background .16s,color .16s;outline:none}.view-switch button:hover{color:var(--fg)}.view-switch button.on{background:var(--accent-solid);color:#fff;font-weight:600;box-shadow:0 1px 4px #0000002e}.cw-link{padding:var(--sp-4) var(--sp-10);border:1px solid var(--border);border-radius:var(--r-sm);background:var(--panel);color:var(--fg);cursor:pointer;font:inherit;font-size:var(--t-sm);white-space:nowrap;transition:border-color .16s,background .16s}.cw-link:hover{border-color:var(--accent)}.cw-link.on{background:var(--accent-solid);color:#fff;border-color:var(--accent-solid);font-weight:600}.cw-settings{margin:var(--sp-2) 0 var(--sp-8);padding:var(--sp-10);background:var(--panel);border:1px solid var(--border);border-radius:var(--r-md)}.cw-sec+.cw-sec{margin-top:var(--sp-12)}.cw-sec-t{font-size:var(--t-xs);font-weight:600;color:var(--muted);margin-bottom:var(--sp-6);letter-spacing:.02em}.cw-fmt-list{display:flex;flex-wrap:wrap;gap:var(--sp-4)}.cw-fmt-btn{display:inline-flex;align-items:center;gap:var(--sp-4);padding:var(--sp-4) var(--sp-8);border:1px solid var(--border);border-radius:var(--r-sm);background:var(--surface-2);color:var(--fg);cursor:pointer;font:inherit;font-size:var(--t-sm);transition:border-color .16s,background .16s,color .16s}.cw-fmt-btn .fi{font-size:var(--t-sm)}.cw-fmt-btn:hover{border-color:var(--accent)}.cw-fmt-btn.on{background:var(--accent-solid);color:#fff;border-color:var(--accent-solid);font-weight:600}.cw-size-list{display:flex;gap:var(--sp-4)}.cw-size-btn{flex:1;padding:var(--sp-4) var(--sp-6);border:1px solid var(--border);border-radius:var(--r-sm);background:var(--surface-2);color:var(--fg);cursor:pointer;font:inherit;font-size:var(--t-sm);white-space:nowrap;transition:border-color .16s,background .16s,color .16s}.cw-size-btn:hover{border-color:var(--accent)}.cw-size-btn.on{background:var(--accent-solid);color:#fff;border-color:var(--accent-solid);font-weight:600}.cw-opt-row{display:flex;align-items:center;gap:var(--sp-8);padding:var(--sp-6) 0;font-size:var(--t-sm)}.cw-opt-row+.cw-opt-row{border-top:1px solid var(--border)}.cw-opt-row .grow{flex:1;min-width:0;white-space:nowrap}.cw-opt-row select,.cw-opt-row input[type=text]{padding:var(--sp-4) var(--sp-6);border:1px solid var(--border);border-radius:var(--r-sm);background:var(--surface-2);color:var(--fg);font:inherit;font-size:var(--t-sm);max-width:58%}.cw-opt-row input[type=number]{width:64px;padding:var(--sp-4) var(--sp-6);border:1px solid var(--border);border-radius:var(--r-sm);background:var(--surface-2);color:var(--fg);font:inherit;font-size:var(--t-sm)}.cw-opt-row .sw{position:relative;flex:none;width:36px;height:20px;display:inline-block}.cw-opt-row .sw input{position:absolute;opacity:0;width:0;height:0}.cw-opt-row .sw i{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:var(--r-pill);cursor:pointer;background:var(--border);transition:background .16s}.cw-opt-row .sw i:before{content:"";position:absolute;left:2px;top:2px;width:16px;height:16px;border-radius:50%;background:#fff;transition:transform .16s}.cw-opt-row .sw input:checked+i{background:var(--accent)}.cw-opt-row .sw input:checked+i:before{transform:translate(16px)}.size-menu{position:absolute;top:100%;right:0;z-index:200;width:140px;margin:var(--sp-4) 0 0 0;padding:var(--sp-4) 0;background:var(--panel);border:1px solid var(--border);border-radius:var(--r-md);box-shadow:0 4px 16px #00000026}.size-item{padding:var(--sp-8) var(--sp-12);font-size:var(--t-sm);cursor:pointer;display:flex;align-items:center;gap:var(--sp-6)}.size-item:hover{background:color-mix(in srgb,var(--accent) 10%,transparent)}.size-item.active{color:var(--accent);font-weight:600}.resize-edge{position:absolute;z-index:2}.resize-edge.resize-w{top:0;left:-3px;bottom:10px;width:calc(10px / var(--ui-scale, 1));cursor:ew-resize}.resize-edge.resize-e{top:0;right:-3px;bottom:10px;width:calc(10px / var(--ui-scale, 1));cursor:ew-resize}.resize-edge.resize-s{left:0;right:10px;bottom:-3px;height:calc(10px / var(--ui-scale, 1));cursor:ns-resize}.resize-edge.resize-se{right:0;bottom:0;width:calc(16px / var(--ui-scale, 1));height:calc(16px / var(--ui-scale, 1));cursor:nwse-resize;background:linear-gradient(-45deg,transparent 50%,var(--accent) 50%);border-radius:0 0 var(--r-lg) 0}.resize-edge.resize-se:hover{background:linear-gradient(-45deg,transparent 45%,color-mix(in srgb,var(--accent) 75%,#000) 50%)}.resize-edge.resize-w:hover,.resize-edge.resize-e:hover,.resize-edge.resize-s:hover{background:color-mix(in srgb,var(--accent) 28%,transparent)}.plugin-card.focused .resize-edge.resize-se,.plugin-card.focused .resize-edge.resize-se:hover{background:none}.settings-shield{position:absolute;top:0;right:0;bottom:0;left:0;z-index:5;background:transparent;cursor:default}.panel{background:var(--panel);border:1px solid var(--border);border-radius:var(--r-lg);padding:var(--s-lg);box-shadow:var(--shadow-sm)}.panel h3{font-size:var(--t-base);margin-bottom:var(--s-md);font-weight:600;letter-spacing:.02em;color:var(--fg);display:flex;align-items:center;gap:var(--s-sm)}.panel h3:before{content:"";width:3px;height:14px;border-radius:var(--r-pill);background:var(--accent);flex:none}.setting-row{display:flex;align-items:center;justify-content:space-between;gap:var(--s-md);padding:var(--s-sm) 0;min-height:44px}.setting-row+.setting-row{border-top:1px solid var(--border)}.setting-row .label{font-size:var(--t-base);color:var(--fg);font-weight:500}.setting-row .hint{font-size:var(--t-sm);color:var(--muted);line-height:1.5;margin-top:var(--sp-2)}.setting-row input[type=range]{min-height:24px;accent-color:var(--accent);cursor:pointer}.btn{padding:var(--sp-8) var(--sp-16);border-radius:var(--r-md);font-size:var(--t-base);min-height:36px;border:1px solid var(--border);background:var(--surface-2);color:var(--fg);cursor:pointer;transition:background .15s,border-color .15s,transform .1s;display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-6)}.btn:hover{background:color-mix(in srgb,var(--accent) 12%,var(--surface-2));border-color:color-mix(in srgb,var(--accent) 40%,var(--border))}.btn:active{transform:scale(.98)}.btn:focus-visible{outline:2px solid var(--ring);outline-offset:2px}.btn.small{padding:var(--sp-4) var(--sp-12);font-size:var(--t-sm);min-height:30px}.btn.primary{background:var(--accent-solid);color:#fff;border-color:var(--accent-solid);box-shadow:0 8px 20px -10px var(--accent-solid)}.btn.primary:hover{background:var(--accent-solid-hover);border-color:var(--accent-solid-hover)}.btn.on{background:color-mix(in srgb,var(--accent) 16%,transparent);border-color:color-mix(in srgb,var(--accent) 60%,transparent);color:var(--accent-ink);font-weight:600}.btn.on:hover{background:color-mix(in srgb,var(--accent) 22%,transparent)}.btn.danger{color:var(--danger);border-color:color-mix(in srgb,var(--danger) 40%,var(--border));background:transparent}.btn.danger:hover{background:color-mix(in srgb,var(--danger) 12%,transparent)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn:disabled:hover{background:var(--surface-2)}.btn:disabled:active{transform:none}.btn.primary:disabled:hover{background:var(--accent-solid)}.badge{display:inline-block;padding:var(--sp-3) var(--sp-8);border-radius:var(--r-pill);font-size:var(--t-xs);line-height:1.6;white-space:nowrap;background:color-mix(in srgb,var(--accent) 14%,transparent);color:var(--accent-ink);border:1px solid transparent}.badge.on{background:color-mix(in srgb,var(--ok) 16%,transparent);color:var(--ok-ink)}.badge.iframe{background:color-mix(in srgb,var(--warn) 18%,transparent);color:var(--warn-ink)}.badge.module{background:color-mix(in srgb,var(--violet) 18%,transparent);color:var(--violet-ink)}.empty-tip{color:var(--muted);text-align:center;padding:var(--s-3xl) 0;font-size:var(--t-base)}.toast{position:fixed;bottom:var(--s-lg);right:var(--s-lg);z-index:999;background:var(--surface-2);color:var(--fg);padding:var(--sp-12) var(--sp-16);border:1px solid var(--border);border-radius:var(--r-md);font-size:var(--t-base);box-shadow:var(--shadow);animation:fadein .2s}@keyframes fadein{0%{opacity:0;transform:translateY(8px)}}.market-grid{display:grid;gap:var(--s-md);grid-template-columns:repeat(auto-fill,minmax(300px,1fr));align-content:start}.market-card{background:var(--panel);border:1px solid var(--border);border-radius:var(--r-lg);padding:var(--s-md);display:flex;flex-direction:column;gap:var(--s-sm);box-shadow:var(--shadow-sm);transition:border-color .18s,transform .18s}.market-card:hover{border-color:color-mix(in srgb,var(--accent) 45%,var(--border));transform:translateY(-2px)}.market-card .head{display:flex;gap:var(--s-md);align-items:center}.market-card .icon{font-size:var(--t-2xl);flex:none;width:42px;height:42px;border-radius:var(--r-md);display:grid;place-items:center;background:var(--surface-2);border:1px solid var(--border)}.market-card .name{font-weight:600;font-size:var(--t-md)}.market-card .ver{color:var(--muted);font-size:var(--t-sm)}.market-card .desc{color:var(--muted);font-size:var(--t-sm);min-height:32px;line-height:1.55}.market-card .foot{display:flex;gap:var(--s-sm);align-items:center;margin-top:auto;flex-wrap:wrap}.wb-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:0;pointer-events:none;background-color:var(--bg);background-repeat:no-repeat;background-position:center;background-size:cover}.app-shell{position:relative;z-index:1}[data-bg=dots] .wb-backdrop{background-image:radial-gradient(color-mix(in srgb,var(--fg) 12%,transparent) 1px,transparent 1px),radial-gradient(color-mix(in srgb,var(--fg) 7%,transparent) 1px,transparent 1px);background-size:22px 22px,22px 22px;background-position:0 0,11px 11px}[data-bg=grid] .wb-backdrop{background-image:linear-gradient(color-mix(in srgb,var(--fg) 8%,transparent) 1px,transparent 1px),linear-gradient(90deg,color-mix(in srgb,var(--fg) 8%,transparent) 1px,transparent 1px);background-size:34px 34px}[data-bg=mesh] .wb-backdrop{background-image:radial-gradient(60% 55% at 18% 12%,color-mix(in srgb,var(--accent) 22%,transparent),transparent 70%),radial-gradient(55% 50% at 84% 86%,color-mix(in srgb,var(--ok) 16%,transparent),transparent 70%)}[data-bg=image] .wb-backdrop{background-image:var(--bg-image, none)}[data-bg=image] .wb-backdrop:after,[data-bg=video] .wb-backdrop:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:color-mix(in srgb,var(--bg) 40%,transparent)}.wb-backdrop video{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover}.main,.desktop-viewport{background:transparent}.bg-grid{display:grid;gap:var(--sp-10);grid-template-columns:repeat(auto-fill,minmax(120px,1fr));margin:var(--sp-4) 0 var(--sp-12)}.bg-item{display:flex;flex-direction:column;gap:var(--sp-4);padding:var(--sp-8);border:1px solid var(--border);border-radius:var(--r-md);background:var(--panel);cursor:pointer;text-align:left;transition:border-color .14s,box-shadow .14s}.bg-item:hover{border-color:var(--accent)}.bg-item.on{border-color:var(--accent);box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 30%,transparent)}.bg-swatch{display:block;position:relative;overflow:hidden;height:52px;border-radius:var(--r-sm);border:1px solid var(--border);background:var(--bg)}.bg-swatch img,.bg-swatch video{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover}.bg-swatch-dots{background-image:radial-gradient(color-mix(in srgb,var(--fg) 22%,transparent) 1px,transparent 1px),radial-gradient(color-mix(in srgb,var(--fg) 14%,transparent) 1px,transparent 1px);background-size:8px 8px,8px 8px;background-position:0 0,4px 4px}.bg-swatch-grid{background-image:linear-gradient(color-mix(in srgb,var(--fg) 18%,transparent) 1px,transparent 1px),linear-gradient(90deg,color-mix(in srgb,var(--fg) 18%,transparent) 1px,transparent 1px);background-size:12px 12px}.bg-swatch-mesh{background-image:radial-gradient(70% 70% at 20% 20%,color-mix(in srgb,var(--accent) 45%,transparent),transparent 70%),radial-gradient(70% 70% at 85% 85%,color-mix(in srgb,var(--ok) 32%,transparent),transparent 70%)}.bg-name{font-size:var(--t-sm);font-weight:600;color:var(--fg)}.bg-desc{font-size:var(--t-xs);color:var(--muted);line-height:1.45}.ws-bar{position:relative;flex:none;background:var(--topbar-bg);border-bottom:1px solid var(--topbar-line);overflow:hidden;transition:height .18s ease,background .18s,border-color .18s}.ws-bar:not(.expanded){height:6px;border-bottom-color:transparent}.ws-bar.expanded{height:40px}.ws-line{position:absolute;left:50%;top:50%;width:42px;height:3px;border-radius:var(--r-2xs);transform:translate(-50%,-50%);background:color-mix(in srgb,var(--fg) 26%,transparent);opacity:0;transition:opacity .18s;pointer-events:none}.ws-bar:not(.expanded) .ws-line{opacity:1}.ws-bar:not(.expanded):hover{background:color-mix(in srgb,var(--accent) 12%,var(--topbar-bg))}.ws-bar.locked{border-bottom-color:color-mix(in srgb,var(--accent) 45%,var(--topbar-line))}.ws-inner{display:flex;align-items:center;gap:var(--sp-6);height:40px;padding:0 var(--sp-12);opacity:0;transition:opacity .14s;pointer-events:none}.ws-bar.expanded .ws-inner{opacity:1;pointer-events:auto}.ws-tabs{display:flex;align-items:center;gap:var(--sp-3);min-width:0}.ws-tab{display:flex;align-items:center;gap:var(--sp-4);max-width:200px;padding:var(--sp-4) var(--sp-8) var(--sp-4) var(--sp-12);border-radius:var(--r-sm);background:color-mix(in srgb,var(--fg) 5%,transparent);border:1px solid transparent;cursor:pointer;-webkit-user-select:none;user-select:none;transition:background .14s,border-color .14s}.ws-tab:hover{background:color-mix(in srgb,var(--fg) 10%,transparent)}.ws-tab.on{background:var(--bg);border-color:var(--topbar-line);box-shadow:0 1px 3px #0000000f}.ws-tab-name{font-size:var(--t-sm);font-weight:600;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ws-tab.on .ws-tab-name{color:var(--fg)}.ws-tab-input{width:110px;padding:var(--sp-1) var(--sp-4);font:inherit;font-size:var(--t-sm);font-weight:600;border:1px solid var(--accent);border-radius:var(--r-xs);background:var(--panel);color:var(--fg);outline:none}.ws-tab-star,.ws-tab-close{flex:none;width:16px;height:16px;border-radius:var(--r-2xs);display:grid;place-items:center;font-size:var(--t-2xs);color:var(--muted);opacity:0;transition:opacity .14s,color .14s;position:relative}.ws-tab-star:before,.ws-tab-close:before{content:"";position:absolute;top:-4px;right:-4px;bottom:-4px;left:-4px}.ws-tab-star.on{opacity:1;color:var(--warn)}.ws-tab:hover .ws-tab-star,.ws-tab:hover .ws-tab-close,.ws-tab.on .ws-tab-close{opacity:1}.ws-tab-star:hover{color:var(--warn)}.ws-tab-close:hover{color:var(--danger)}.ws-add{flex:none;width:26px;height:26px;border-radius:var(--r-sm);display:grid;place-items:center;font-size:var(--t-lg);color:var(--muted);transition:background .14s,color .14s}.ws-add:hover{background:color-mix(in srgb,var(--fg) 12%,transparent);color:var(--fg)}.ws-lock{flex:none;width:26px;height:26px;border-radius:var(--r-sm);display:grid;place-items:center;color:var(--muted);transition:background .14s,color .14s}.ws-lock:hover{background:color-mix(in srgb,var(--fg) 12%,transparent);color:var(--fg)}.ws-lock.on{color:var(--accent);background:color-mix(in srgb,var(--accent) 14%,transparent)}.ws-menu{position:fixed;z-index:500;min-width:160px;padding:var(--sp-4);background:var(--panel);border:1px solid var(--border);border-radius:var(--r-md);box-shadow:0 8px 28px #0003;display:flex;flex-direction:column;gap:var(--sp-1)}.ws-menu button{padding:var(--sp-6) var(--sp-10);border-radius:var(--r-sm);text-align:left;font:inherit;font-size:var(--t-sm);color:var(--fg);transition:background .12s}.ws-menu button:hover{background:color-mix(in srgb,var(--accent) 12%,transparent)}.ws-menu button.danger:hover{background:color-mix(in srgb,var(--danger) 14%,transparent);color:var(--danger)}.ws-menu button:disabled{opacity:.4;cursor:not-allowed}.ws-menu button:disabled:hover{background:transparent}.ws-menu-sep{height:1px;margin:var(--sp-3) var(--sp-4);background:var(--border)}.overlay-host{position:fixed;z-index:400;background:transparent;transition:left .9s ease-in-out,top .9s ease-in-out}.overlay-host.dragging{transition:none}.overlay-frame{width:100%;height:100%;border:0;background:transparent;display:block}.dock-wrap{position:fixed;right:calc(var(--corner-right) + var(--corner-slot));bottom:var(--corner-bottom);z-index:999;display:flex;flex-direction:column;align-items:flex-end}.dock-launch{position:relative;width:52px;height:52px;border-radius:50%;display:grid;place-items:center;background:var(--panel);border:1px solid var(--border);box-shadow:0 6px 20px #0000002e;cursor:pointer;transition:transform .16s,box-shadow .16s,border-color .16s}.dock-launch:hover{transform:scale(1.06);box-shadow:0 8px 26px #0000003d}.dock-launch.on{border-color:var(--accent)}.dock-launch-ico{font-size:var(--ico-md);color:var(--accent);line-height:1}.dock-launch-n{position:absolute;right:-3px;top:-3px;min-width:18px;height:18px;padding:0 var(--sp-4);border-radius:var(--r-sm);display:grid;place-items:center;background:var(--accent-solid);color:#fff;font-size:var(--t-2xs);font-weight:700}.dock{--dock-rows: 10;--dock-row: 44px;--dock-gap: 2px;position:absolute;right:0;bottom:calc(100% + 10px);width:260px;max-height:calc(100vh - 120px);display:flex;flex-direction:column;background:var(--panel);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:0 10px 34px #00000038;overflow:hidden}.dock-head{display:flex;align-items:baseline;gap:var(--sp-6);padding:var(--sp-10) var(--sp-12) var(--sp-6)}.dock-title{font-size:var(--t-base);font-weight:700;color:var(--fg)}.dock-sub{font-size:var(--t-xs);color:var(--muted)}.dock-x{width:20px;height:20px;border-radius:var(--r-xs);display:grid;place-items:center;font-size:var(--t-xs);color:var(--muted)}.dock-x:hover{background:color-mix(in srgb,var(--danger) 14%,transparent);color:var(--danger)}.dock-search{position:relative;padding:0 var(--sp-12) var(--sp-8)}.dock-search input{width:100%;padding:var(--sp-6) var(--sp-24) var(--sp-6) var(--sp-8);border:1px solid var(--border);border-radius:var(--r-sm);background:var(--surface-2, var(--bg));color:var(--fg);font:inherit;font-size:var(--t-sm);outline:none}.dock-search input:focus{border-color:var(--accent)}.dock-clear{position:absolute;right:18px;top:5px;width:18px;height:18px;border-radius:var(--r-xs);display:grid;place-items:center;font-size:var(--t-2xs);color:var(--muted)}.dock-clear:hover{color:var(--fg)}.dock-list{overflow-y:auto;padding:0 var(--sp-8) var(--sp-8);display:flex;flex-direction:column;gap:var(--dock-gap);max-height:calc(var(--dock-rows) * var(--dock-row) + (var(--dock-rows) - 1) * var(--dock-gap));flex:1 1 auto;min-height:0;scrollbar-width:thin;overscroll-behavior:contain}.dock-list::-webkit-scrollbar{width:8px}.dock-list::-webkit-scrollbar-thumb{background:color-mix(in srgb,var(--fg) 18%,transparent);border-radius:var(--r-2xs);border:2px solid transparent;background-clip:content-box}.dock-list::-webkit-scrollbar-thumb:hover{background:color-mix(in srgb,var(--fg) 30%,transparent);background-clip:content-box}.dock-list::-webkit-scrollbar-track{background:transparent}.dock-item{display:flex;align-items:center;gap:var(--sp-8);flex:none;height:var(--dock-row);padding:0 var(--sp-8);border-radius:var(--r-sm);cursor:grab;border:1px solid transparent;transition:background .12s,border-color .12s,opacity .12s}.dock-item:hover{background:color-mix(in srgb,var(--accent) 10%,transparent)}.dock-item.on{border-color:color-mix(in srgb,var(--accent) 28%,transparent)}.dock-item.off{opacity:.5}.dock-item.dragging{opacity:.4;cursor:grabbing}.dock-item.over{border-color:var(--ok);box-shadow:0 0 0 2px color-mix(in srgb,var(--ok) 32%,transparent)}.dock-ico{font-size:var(--ico-md);flex:none}.dock-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:var(--sp-1)}.dock-name{font-size:var(--t-sm);font-weight:600;color:var(--fg);display:flex;align-items:center;gap:var(--sp-4);min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dock-badge{flex:none;padding:var(--sp-1) var(--sp-4);border-radius:var(--r-xs);font-size:var(--t-2xs);font-weight:600;line-height:1.5;background:color-mix(in srgb,var(--fg) 10%,transparent);color:var(--muted)}.dock-badge.on{background:color-mix(in srgb,var(--ok) 18%,transparent);color:var(--ok)}.dock-desc{font-size:var(--t-xs);color:var(--muted);line-height:1.4;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dock-dot{flex:none;width:7px;height:7px;border-radius:50%;background:var(--border)}.dock-item.on .dock-dot{background:var(--ok)}.dock-empty{padding:var(--sp-12) var(--sp-12);font-size:var(--t-sm);color:var(--muted);text-align:center}
