most-box 0.1.3 → 0.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -4
- package/electron/main.js +31 -10
- package/out/404/index.html +2 -2
- package/out/404.html +2 -2
- package/out/__next.__PAGE__.txt +6 -6
- package/out/__next._full.txt +15 -15
- package/out/__next._head.txt +3 -3
- package/out/__next._index.txt +7 -7
- package/out/__next._tree.txt +4 -4
- package/out/_next/static/chunks/{0hpev4am9jpmu.css → 0.4ov9319fecg.css} +1 -1
- package/out/_next/static/chunks/0._8s6pbfw.xk.js +1 -0
- package/out/_next/static/chunks/02jvyg27pp0mz.js +1 -0
- package/out/_next/static/chunks/02zzxfop_k6tl.css +1 -0
- package/out/_next/static/chunks/06lttvu7563zo.css +1 -0
- package/out/_next/static/chunks/{0pt.5cg1t09qs.js → 08qqf0rsi3oot.js} +1 -1
- package/out/_next/static/chunks/{0adx~d-j05c9d.css → 09h7l4i38xc7q.css} +1 -1
- package/out/_next/static/chunks/09hqx79-jkvm_.css +1 -0
- package/out/_next/static/chunks/09vcm1ku9k7o8.js +1 -0
- package/out/_next/static/chunks/0c6e_d2jq179x.js +1 -0
- package/out/_next/static/chunks/0ccalho416.d7.js +1 -0
- package/out/_next/static/chunks/0exj_tg.ew-t3.js +1 -0
- package/out/_next/static/chunks/0f-wz5d~tv-r4.js +1 -0
- package/out/_next/static/chunks/0f0jhsujtf-61.js +1 -0
- package/out/_next/static/chunks/0hyds~bp.auvh.js +1 -0
- package/out/_next/static/chunks/0ig8a4sazk3~2.css +1 -0
- package/out/_next/static/chunks/0iq1h7g4dudg8.js +1 -0
- package/out/_next/static/chunks/0knnzo9aih48r.js +1 -0
- package/out/_next/static/chunks/0nzyk~sg_tn._.js +1 -0
- package/out/_next/static/chunks/{12nr19.nnn6s3.js → 0t_3xxx4zkerp.js} +2 -2
- package/out/_next/static/chunks/0w~2fjq86t7c7.css +1 -0
- package/out/_next/static/chunks/0xrqerhosrp9~.js +1 -0
- package/out/_next/static/chunks/0xx_10jns1.s7.css +1 -0
- package/out/_next/static/chunks/14-fm9r_mom81.js +1 -0
- package/out/_next/static/chunks/14jhy~xia8lh8.js +1 -0
- package/out/_next/static/chunks/{turbopack-0xta0kqwzkf28.js → turbopack-05qngmxam3ar~.js} +1 -1
- package/out/_not-found/__next._full.txt +12 -12
- package/out/_not-found/__next._head.txt +3 -3
- package/out/_not-found/__next._index.txt +7 -7
- package/out/_not-found/__next._not-found.__PAGE__.txt +4 -4
- package/out/_not-found/__next._not-found.txt +3 -3
- package/out/_not-found/__next._tree.txt +2 -2
- package/out/_not-found/index.html +2 -2
- package/out/_not-found/index.txt +12 -12
- package/out/admin/__next._full.txt +14 -14
- package/out/admin/__next._head.txt +3 -3
- package/out/admin/__next._index.txt +7 -7
- package/out/admin/__next._tree.txt +3 -3
- package/out/admin/__next.admin.__PAGE__.txt +4 -4
- package/out/admin/__next.admin.txt +4 -4
- package/out/admin/index.html +2 -2
- package/out/admin/index.txt +14 -14
- package/out/app/__next._full.txt +13 -13
- package/out/app/__next._head.txt +3 -3
- package/out/app/__next._index.txt +7 -7
- package/out/app/__next._tree.txt +2 -2
- package/out/app/__next.app.__PAGE__.txt +4 -4
- package/out/app/__next.app.txt +3 -3
- package/out/app/index.html +2 -2
- package/out/app/index.txt +13 -13
- package/out/chat/__next._full.txt +14 -14
- package/out/chat/__next._head.txt +3 -3
- package/out/chat/__next._index.txt +7 -7
- package/out/chat/__next._tree.txt +3 -3
- package/out/chat/__next.chat.__PAGE__.txt +4 -4
- package/out/chat/__next.chat.txt +4 -4
- package/out/chat/index.html +2 -2
- package/out/chat/index.txt +14 -14
- package/out/chat/join/__next._full.txt +14 -14
- package/out/chat/join/__next._head.txt +3 -3
- package/out/chat/join/__next._index.txt +7 -7
- package/out/chat/join/__next._tree.txt +3 -3
- package/out/chat/join/__next.chat.join.__PAGE__.txt +4 -4
- package/out/chat/join/__next.chat.join.txt +3 -3
- package/out/chat/join/__next.chat.txt +4 -4
- package/out/chat/join/index.html +2 -2
- package/out/chat/join/index.txt +14 -14
- package/out/download/__next._full.txt +34 -36
- package/out/download/__next._head.txt +3 -3
- package/out/download/__next._index.txt +7 -7
- package/out/download/__next._tree.txt +4 -4
- package/out/download/__next.download.__PAGE__.txt +7 -7
- package/out/download/__next.download.txt +3 -3
- package/out/download/index.html +2 -2
- package/out/download/index.txt +34 -36
- package/out/favicon.ico +0 -0
- package/out/game/__next._full.txt +20 -0
- package/out/game/__next._head.txt +5 -0
- package/out/game/__next._index.txt +9 -0
- package/out/game/__next._tree.txt +5 -0
- package/out/game/__next.game.__PAGE__.txt +6 -0
- package/out/game/__next.game.txt +5 -0
- package/out/game/gandengyan/__next._full.txt +26 -0
- package/out/game/gandengyan/__next._head.txt +5 -0
- package/out/game/gandengyan/__next._index.txt +9 -0
- package/out/game/gandengyan/__next._tree.txt +6 -0
- package/out/game/gandengyan/__next.game.gandengyan.__PAGE__.txt +10 -0
- package/out/game/gandengyan/__next.game.gandengyan.txt +5 -0
- package/out/game/gandengyan/__next.game.txt +5 -0
- package/out/game/gandengyan/index.html +15 -0
- package/out/game/gandengyan/index.txt +26 -0
- package/out/game/index.html +1 -0
- package/out/game/index.txt +20 -0
- package/out/game/zhajinhua/__next._full.txt +25 -0
- package/out/game/zhajinhua/__next._head.txt +5 -0
- package/out/game/zhajinhua/__next._index.txt +9 -0
- package/out/game/zhajinhua/__next._tree.txt +5 -0
- package/out/game/zhajinhua/__next.game.txt +5 -0
- package/out/game/zhajinhua/__next.game.zhajinhua.__PAGE__.txt +9 -0
- package/out/game/zhajinhua/__next.game.zhajinhua.txt +5 -0
- package/out/game/zhajinhua/index.html +15 -0
- package/out/game/zhajinhua/index.txt +25 -0
- package/out/index.html +2 -2
- package/out/index.txt +15 -15
- package/out/logo-512.png +0 -0
- package/out/logo.ico +0 -0
- package/out/logo.svg +12 -0
- package/out/note/__next._full.txt +13 -13
- package/out/note/__next._head.txt +3 -3
- package/out/note/__next._index.txt +7 -7
- package/out/note/__next._tree.txt +2 -2
- package/out/note/__next.note.__PAGE__.txt +4 -4
- package/out/note/__next.note.txt +3 -3
- package/out/note/index.html +2 -2
- package/out/note/index.txt +13 -13
- package/out/ping/__next._full.txt +14 -14
- package/out/ping/__next._head.txt +3 -3
- package/out/ping/__next._index.txt +7 -7
- package/out/ping/__next._tree.txt +3 -3
- package/out/ping/__next.ping.__PAGE__.txt +5 -5
- package/out/ping/__next.ping.txt +3 -3
- package/out/ping/index.html +2 -2
- package/out/ping/index.txt +14 -14
- package/out/web3/__next._full.txt +13 -13
- package/out/web3/__next._head.txt +3 -3
- package/out/web3/__next._index.txt +7 -7
- package/out/web3/__next._tree.txt +2 -2
- package/out/web3/__next.web3.__PAGE__.txt +4 -4
- package/out/web3/__next.web3.txt +3 -3
- package/out/web3/ed25519/__next._full.txt +11 -11
- package/out/web3/ed25519/__next._head.txt +3 -3
- package/out/web3/ed25519/__next._index.txt +7 -7
- package/out/web3/ed25519/__next._tree.txt +2 -2
- package/out/web3/ed25519/__next.web3.ed25519.__PAGE__.txt +2 -2
- package/out/web3/ed25519/__next.web3.ed25519.txt +3 -3
- package/out/web3/ed25519/__next.web3.txt +3 -3
- package/out/web3/ed25519/index.html +1 -1
- package/out/web3/ed25519/index.txt +11 -11
- package/out/web3/index.html +2 -2
- package/out/web3/index.txt +13 -13
- package/out/web3/tools/__next._full.txt +11 -11
- package/out/web3/tools/__next._head.txt +3 -3
- package/out/web3/tools/__next._index.txt +7 -7
- package/out/web3/tools/__next._tree.txt +2 -2
- package/out/web3/tools/__next.web3.tools.__PAGE__.txt +2 -2
- package/out/web3/tools/__next.web3.tools.txt +3 -3
- package/out/web3/tools/__next.web3.txt +3 -3
- package/out/web3/tools/index.html +1 -1
- package/out/web3/tools/index.txt +11 -11
- package/package.json +6 -5
- package/public/favicon.ico +0 -0
- package/public/logo-512.png +0 -0
- package/public/logo.ico +0 -0
- package/public/logo.svg +12 -0
- package/server/index.js +0 -8
- package/server/src/config.js +1 -1
- package/server/src/core/gameRoom.js +222 -0
- package/server/src/core/zhajinhua.js +563 -0
- package/server/src/games/gandengyan.js +354 -413
- package/server/src/http/app.js +22 -14
- package/server/src/http/uploads.js +1 -0
- package/server/src/index.js +275 -90
- package/server/src/utils/avatar.js +3 -2
- package/out/_next/static/chunks/04mo7rr..0_1q.js +0 -1
- package/out/_next/static/chunks/06rf3qq5ggs6v.js +0 -1
- package/out/_next/static/chunks/07td.jq7xff84.css +0 -1
- package/out/_next/static/chunks/0_0oph_z1az14.js +0 -1
- package/out/_next/static/chunks/0ao1lbi4b.sfa.js +0 -1
- package/out/_next/static/chunks/0cl7d~7abnk_p.css +0 -1
- package/out/_next/static/chunks/0d306t1wvjpdx.js +0 -1
- package/out/_next/static/chunks/0g_a~e050bgzg.css +0 -1
- package/out/_next/static/chunks/0m_5nb6x8qy._.js +0 -1
- package/out/_next/static/chunks/0n.ayxmsar6e5.js +0 -1
- package/out/_next/static/chunks/0olqjomda37-e.js +0 -1
- package/out/_next/static/chunks/0qgx9t4jx16ua.css +0 -1
- package/out/_next/static/chunks/0s~g.l~x049o2.js +0 -1
- package/out/_next/static/chunks/0voe1.ttrh84k.css +0 -1
- package/out/_next/static/chunks/0wtf0xsiicxx6.js +0 -1
- package/out/_next/static/chunks/0x.ky97owcxxs.js +0 -1
- package/out/_next/static/chunks/0ysj5b94vu4ri.js +0 -1
- package/out/_next/static/chunks/153-sz7s.qml2.js +0 -1
- package/out/_next/static/chunks/17cwkb2yn_akx.js +0 -1
- package/out/_next/static/chunks/184hxsuf-5c84.js +0 -1
- package/out/gandengyan/__next._full.txt +0 -25
- package/out/gandengyan/__next._head.txt +0 -5
- package/out/gandengyan/__next._index.txt +0 -9
- package/out/gandengyan/__next._tree.txt +0 -5
- package/out/gandengyan/__next.gandengyan.__PAGE__.txt +0 -10
- package/out/gandengyan/__next.gandengyan.txt +0 -5
- package/out/gandengyan/index.html +0 -15
- package/out/gandengyan/index.txt +0 -25
- /package/out/_next/static/{aPEZ4zaaR5W3WpSZ0dFsa → 2smv1H9Y4Z2Ri-SL-UFgR}/_buildManifest.js +0 -0
- /package/out/_next/static/{aPEZ4zaaR5W3WpSZ0dFsa → 2smv1H9Y4Z2Ri-SL-UFgR}/_clientMiddlewareManifest.js +0 -0
- /package/out/_next/static/{aPEZ4zaaR5W3WpSZ0dFsa → 2smv1H9Y4Z2Ri-SL-UFgR}/_ssgManifest.js +0 -0
- /package/out/{pwa-512x512.png → avatar.png} +0 -0
- /package/public/{pwa-512x512.png → avatar.png} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,95057,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={formatUrl:function(){return l},formatWithValidation:function(){return c},urlObjectKeys:function(){return o}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let s=e.r(90809)._(e.r(98183)),i=/https?|ftp|gopher|file/;function l(e){let{auth:t,hostname:r}=e,n=e.protocol||"",a=e.pathname||"",l=e.hash||"",o=e.query||"",c=!1;t=t?encodeURIComponent(t).replace(/%3A/i,":")+"@":"",e.host?c=t+e.host:r&&(c=t+(~r.indexOf(":")?`[${r}]`:r),e.port&&(c+=":"+e.port)),o&&"object"==typeof o&&(o=String(s.urlQueryToSearchParams(o)));let u=e.search||o&&`?${o}`||"";return n&&!n.endsWith(":")&&(n+=":"),e.slashes||(!n||i.test(n))&&!1!==c?(c="//"+(c||""),a&&"/"!==a[0]&&(a="/"+a)):c||(c=""),l&&"#"!==l[0]&&(l="#"+l),u&&"?"!==u[0]&&(u="?"+u),a=a.replace(/[?#]/g,encodeURIComponent),u=u.replace("#","%23"),`${n}${c}${a}${u}${l}`}let o=["auth","hash","host","hostname","href","path","pathname","port","protocol","query","search","slashes"];function c(e){return l(e)}},18581,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"useMergedRef",{enumerable:!0,get:function(){return a}});let n=e.r(71645);function a(e,t){let r=(0,n.useRef)(null),a=(0,n.useRef)(null);return(0,n.useCallback)(n=>{if(null===n){let e=r.current;e&&(r.current=null,e());let t=a.current;t&&(a.current=null,t())}else e&&(r.current=s(e,n)),t&&(a.current=s(t,n))},[e,t])}function s(e,t){if("function"!=typeof e)return e.current=t,()=>{e.current=null};{let r=e(t);return"function"==typeof r?r:()=>e(null)}}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},73668,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"isLocalURL",{enumerable:!0,get:function(){return s}});let n=e.r(18967),a=e.r(52817);function s(e){if(!(0,n.isAbsoluteUrl)(e))return!0;try{let t=(0,n.getLocationOrigin)(),r=new URL(e,t);return r.origin===t&&(0,a.hasBasePath)(r.pathname)}catch(e){return!1}}},84508,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"errorOnce",{enumerable:!0,get:function(){return n}});let n=e=>{}},22016,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={default:function(){return g},useLinkStatus:function(){return j}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let s=e.r(90809),i=e.r(18050),l=s._(e.r(71645)),o=e.r(95057),c=e.r(8372),u=e.r(18581),d=e.r(18967),h=e.r(5550);e.r(33525);let p=e.r(88540),f=e.r(91949),m=e.r(73668),y=e.r(9396);function g(t){var r,n;let a,s,g,[j,v]=(0,l.useOptimistic)(f.IDLE_LINK_STATUS),x=(0,l.useRef)(null),{href:k,as:w,children:C,prefetch:S=null,passHref:N,replace:M,shallow:A,scroll:I,onClick:$,onMouseEnter:E,onTouchStart:z,legacyBehavior:R=!1,onNavigate:P,transitionTypes:L,ref:_,unstable_dynamicOnHover:O,...T}=t;a=C,R&&("string"==typeof a||"number"==typeof a)&&(a=(0,i.jsx)("a",{children:a}));let U=l.default.useContext(c.AppRouterContext),K=!1!==S,D=!1!==S?null===(n=S)||"auto"===n?y.FetchStrategy.PPR:y.FetchStrategy.Full:y.FetchStrategy.PPR,B="string"==typeof(r=w||k)?r:(0,o.formatUrl)(r);if(R){if(a?.$$typeof===Symbol.for("react.lazy"))throw Object.defineProperty(Error("`<Link legacyBehavior>` received a direct child that is either a Server Component, or JSX that was loaded with React.lazy(). This is not supported. Either remove legacyBehavior, or make the direct child a Client Component that renders the Link's `<a>` tag."),"__NEXT_ERROR_CODE",{value:"E863",enumerable:!1,configurable:!0});s=l.default.Children.only(a)}let V=R?s&&"object"==typeof s&&s.ref:_,q=l.default.useCallback(e=>(null!==U&&(x.current=(0,f.mountLinkInstance)(e,B,U,D,K,v)),()=>{x.current&&((0,f.unmountLinkForCurrentNavigation)(x.current),x.current=null),(0,f.unmountPrefetchableInstance)(e)}),[K,B,U,D,v]),G={ref:(0,u.useMergedRef)(q,V),onClick(t){R||"function"!=typeof $||$(t),R&&s.props&&"function"==typeof s.props.onClick&&s.props.onClick(t),!U||t.defaultPrevented||function(t,r,n,a,s,i,o){if("u">typeof window){let c,{nodeName:u}=t.currentTarget;if("A"===u.toUpperCase()&&((c=t.currentTarget.getAttribute("target"))&&"_self"!==c||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey||t.nativeEvent&&2===t.nativeEvent.which)||t.currentTarget.hasAttribute("download"))return;if(!(0,m.isLocalURL)(r)){a&&(t.preventDefault(),location.replace(r));return}if(t.preventDefault(),i){let e=!1;if(i({preventDefault:()=>{e=!0}}),e)return}let{dispatchNavigateAction:d}=e.r(99781);l.default.startTransition(()=>{d(r,a?"replace":"push",!1===s?p.ScrollBehavior.NoScroll:p.ScrollBehavior.Default,n.current,o)})}}(t,B,x,M,I,P,L)},onMouseEnter(e){R||"function"!=typeof E||E(e),R&&s.props&&"function"==typeof s.props.onMouseEnter&&s.props.onMouseEnter(e),U&&K&&(0,f.onNavigationIntent)(e.currentTarget,!0===O)},onTouchStart:function(e){R||"function"!=typeof z||z(e),R&&s.props&&"function"==typeof s.props.onTouchStart&&s.props.onTouchStart(e),U&&K&&(0,f.onNavigationIntent)(e.currentTarget,!0===O)}};return(0,d.isAbsoluteUrl)(B)?G.href=B:R&&!N&&("a"!==s.type||"href"in s.props)||(G.href=(0,h.addBasePath)(B)),g=R?l.default.cloneElement(s,G):(0,i.jsx)("a",{...T,...G,children:a}),(0,i.jsx)(b.Provider,{value:j,children:g})}e.r(84508);let b=(0,l.createContext)(f.IDLE_LINK_STATUS),j=()=>(0,l.useContext)(b);("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},8734,e=>{"use strict";let t=(0,e.i(56420).default)("copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]);e.s(["Copy",0,t],8734)},96699,e=>{"use strict";let t=(0,e.i(56420).default)("moon",[["path",{d:"M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401",key:"kfwtm"}]]);e.s(["Moon",0,t],96699)},35965,e=>{"use strict";let t=(0,e.i(56420).default)("sun",[["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"m4.93 4.93 1.41 1.41",key:"149t6j"}],["path",{d:"m17.66 17.66 1.41 1.41",key:"ptbguv"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"m6.34 17.66-1.41 1.41",key:"1m8zz5"}],["path",{d:"m19.07 4.93-1.41 1.41",key:"1shlcs"}]]);e.s(["Sun",0,t],35965)},11241,e=>{"use strict";let t=(0,e.i(56420).default)("arrow-left",[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]]);e.s(["ArrowLeft",0,t],11241)},59665,5142,e=>{"use strict";var t=e.i(18050),r=e.i(71645);let n=(0,e.i(56420).default)("menu",[["path",{d:"M4 5h16",key:"1tepv9"}],["path",{d:"M4 12h16",key:"1lakjw"}],["path",{d:"M4 19h16",key:"1djgab"}]]);function a(e=!1,t={}){let[n,s]=(0,r.useState)(e),i=(0,r.useCallback)(()=>{s(e=>e||(t.onOpen?.(),!0))},[t.onOpen]),l=(0,r.useCallback)(()=>{s(e=>e?(t.onClose?.(),!1):e)},[t.onClose]);return[n,{open:i,close:l,toggle:(0,r.useCallback)(()=>{n?l():i()},[l,i,n]),set:s}]}e.s(["useDisclosure",0,a],5142);let s=(0,r.createContext)(null);e.s(["default",0,function({sidebar:e,headerTitle:i,headerRight:l,children:o}){let[c,u]=a(!1),[d,h]=(0,r.useState)(!1),p=function(e,{getInitialValueInEffect:t}={getInitialValueInEffect:!0}){let[n,a]=(0,r.useState)(t?void 0:!!("u">typeof window&&"matchMedia"in window)&&window.matchMedia(e).matches);return(0,r.useEffect)(()=>{try{if("matchMedia"in window){let t=window.matchMedia(e);a(t.matches);let r=e=>a(e.matches);return t.addEventListener("change",r),()=>{t.removeEventListener("change",r)}}}catch(e){return}},[e]),n||!1}("(max-width: 768px)"),f=()=>{p?u.open():h(!1)};return(0,t.jsx)(s.Provider,{value:{closeSidebar:u.close,openSidebar:f,isSidebarVisible:p?c:!d},children:(0,t.jsxs)("div",{className:"app-layout",children:[(0,t.jsx)("div",{className:`sidebar-overlay ${c?"visible":""}`,onClick:()=>u.close()}),(0,t.jsx)("div",{className:`sidebar ${c?"open":""} ${d?"collapsed":""}`,children:e({closeSidebar:u.close,openSidebar:f})}),(0,t.jsxs)("div",{className:"main-content",children:[(0,t.jsxs)("header",{className:"app-header",children:[(0,t.jsxs)("div",{className:"header-left",children:[(0,t.jsx)("button",{onClick:()=>{p?u.toggle():h(!d)},className:"btn btn-icon sidebar-toggle-btn","aria-label":p?"打开菜单":d?"展开侧边栏":"收起侧边栏",children:(0,t.jsx)(n,{size:16})}),i]}),(0,t.jsx)("div",{className:"header-right",children:l})]}),o]})]})})},"useAppShell",0,function(){let e=(0,r.useContext)(s);if(!e)throw Error("useAppShell must be used within AppShell");return e}],59665)},27648,e=>{"use strict";var t=e.i(18050),r=e.i(93957),n=e.i(71192);e.s(["default",0,function({className:e=""}){let a=(0,n.useUserStore)(e=>e.identity),s=(0,n.useUserStore)(e=>e.openLoginModal),i=(0,n.useUserStore)(e=>e.logoutUser);return(0,t.jsxs)("div",{className:`chat-sidebar-footer sidebar-account ${e}`,children:[(0,t.jsxs)("div",{className:"user-info",children:[(0,t.jsx)("img",{className:"user-avatar-img",src:(0,r.generateAvatar)(a?.address,a?.avatar),alt:"avatar"}),(0,t.jsx)("span",{className:"user-name",title:a?.address,children:a?.displayName||"未登录"})]}),a?(0,t.jsx)("button",{className:"btn btn-ghost logout-btn",onClick:i,children:"退出"}):(0,t.jsx)("button",{className:"btn btn-primary login-btn",onClick:s,children:"登录"})]})}])},87884,e=>{"use strict";var t=e.i(26913);e.s(["channelApi",0,{getChannels(e={}){let r=new URLSearchParams;e.type&&r.set("type",e.type),e.excludeType&&r.set("excludeType",e.excludeType);let n=r.toString();return t.api.get(n?`/api/channels?${n}`:"/api/channels").json()},createChannel:(e,r="personal")=>t.api.post("/api/channels",{json:{name:e,type:r}}).json(),leaveChannel:e=>t.api.delete(`/api/channels/${encodeURIComponent(e)}`).json(),getChannelMessages:(e,r=100,n=0)=>t.api.get(`/api/channels/${encodeURIComponent(e)}/messages?limit=${r}&offset=${n}`).json(),sendChannelMessage:({channelName:e,content:r,author:n,authorName:a,attachment:s})=>t.api.post(`/api/channels/${encodeURIComponent(e)}/messages`,{json:s?{content:r,author:n,authorName:a,attachment:s}:{content:r,author:n,authorName:a}}).json(),getChannelPeers:e=>t.api.get(`/api/channels/${encodeURIComponent(e)}/peers`).json(),setChannelRemark:(e,r)=>t.api.put(`/api/channels/${encodeURIComponent(e)}/remark`,{json:{remark:r}}).json()}])},23952,e=>{"use strict";var t=e.i(71645),r=e.i(87884),n=e.i(26913);function a(e){return String(e.id||`${e.author||""}-${e.timestamp||""}-${e.content||""}`)}e.s(["useChannelMessages",0,function({isReady:e,enabled:s=!0,channelName:i="",peerId:l="",waitForPeerId:o=!1,limit:c=100,reconnectBaseDelay:u=2500,acceptMessage:d,getMessageKey:h=a,onSyncError:p,onSocketEvent:f}){let[m,y]=(0,t.useState)([]),[g,b]=(0,t.useState)(!1),j=(0,t.useRef)(null),v=(0,t.useRef)(i),x=(0,t.useRef)(null),k=(0,t.useRef)(0),w=(0,t.useRef)(d),C=(0,t.useRef)(h),S=(0,t.useRef)(f),N=(0,t.useRef)(p),M=(0,t.useRef)(l);(0,t.useEffect)(()=>{w.current=d},[d]),(0,t.useEffect)(()=>{C.current=h},[h]),(0,t.useEffect)(()=>{S.current=f},[f]),(0,t.useEffect)(()=>{N.current=p},[p]);let A=(0,t.useCallback)(e=>{let t=w.current;return t?e.filter(t):e},[]),I=(0,t.useCallback)((e,t,r=!0)=>{let n=[...e];for(let e of A(t)){let t=C.current(e);if(r){let r=n.findIndex(t=>t.pending&&t.author?.toLowerCase()===e.author?.toLowerCase()&&t.content===e.content);if(-1!==r){n[r]={...e,id:e.id||t};continue}}n.some(e=>C.current(e)===t)||n.push({...e,id:e.id||t})}return n},[A]),$=(0,t.useCallback)((e,t)=>{j.current?.readyState===WebSocket.OPEN&&j.current.send(JSON.stringify({event:e,data:t}))},[]),E=(0,t.useCallback)(e=>{e&&$("channel:subscribe",{channel:e})},[$]),z=(0,t.useCallback)(e=>{e&&$("channel:unsubscribe",{channel:e})},[$]),R=(0,t.useCallback)(async(t=v.current,n={})=>{if(!t||!e)return[];try{let e=A(await r.channelApi.getChannelMessages(t,c));return y(t=>n.replace?e:I(t,e,!1)),e}catch(e){return n.replace&&y([]),await N.current?.(e),[]}},[A,e,c,I]);(0,t.useEffect)(()=>{M.current=l,l&&($("register",{peerId:l}),o&&v.current&&(E(v.current),R(v.current,{replace:!0})))},[l,E,R,o,$]);let P=(0,t.useCallback)(()=>{y([])},[]),L=(0,t.useCallback)(async({channelName:e=v.current,content:t,author:n,authorName:a,attachment:s,optimisticId:i})=>{let l=t.trim();if(!e||!l)return null;let o={id:i||`${n}-${Date.now()}-${Math.random().toString(36).slice(2)}`,author:n,authorName:a,content:l,timestamp:Date.now(),pending:!0,attachment:s};y(e=>[...e,o]);try{let t=await r.channelApi.sendChannelMessage({channelName:e,content:l,author:n,authorName:a,attachment:s});return y(e=>e.map(e=>e.id===o.id?{...t.message,id:t.message.id||C.current(t.message)}:e)),t.message}catch(e){throw y(e=>e.filter(e=>e.id!==o.id)),e}},[]);return(0,t.useEffect)(()=>{let t=v.current;if(v.current=i,t&&t!==i&&z(t),i&&e&&s)return R(i,{replace:!0}),(!o||M.current)&&E(i),()=>z(i)},[i,s,e,E,R,z,o]),(0,t.useEffect)(()=>{if(!e||!s)return void b(!1);let t=!1;async function r(){let e=new WebSocket(await (0,n.getAuthenticatedWebSocketUrl)("/ws"));t?e.close():(e.onopen=()=>{b(!0),k.current=0,M.current&&e.send(JSON.stringify({event:"register",data:{peerId:M.current}})),v.current&&(!o||M.current)&&(E(v.current),R(v.current,{replace:!0}))},e.onmessage=e=>{try{let t=JSON.parse(e.data);S.current?.(t.event,t.data),"channel:message"===t.event&&t.data?.channel===v.current&&t.data?.message&&y(e=>I(e,[t.data.message]))}catch{}},e.onclose=()=>{if(b(!1),t)return;let e=k.current;if(e>=20)return;let n=Math.min(u*Math.pow(2,e),3e4);k.current=e+1,x.current=setTimeout(r,n)},e.onerror=()=>e.close(),j.current=e)}return k.current=0,r(),()=>{t=!0,x.current&&clearTimeout(x.current),j.current?.close(),j.current=null}},[s,e,I,u,E,R,o]),{clearMessages:P,connected:g,messages:m,sendMessage:L,setMessages:y,syncMessages:R}}])},21357,e=>{"use strict";let t=(0,e.i(56420).default)("play",[["path",{d:"M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z",key:"10ikf1"}]]);e.s(["Play",0,t],21357)},53881,53751,99591,34471,e=>{"use strict";var t=e.i(18050),r=e.i(22016),n=e.i(11241),a=e.i(56420);let s=(0,a.default)("spade",[["path",{d:"M12 18v4",key:"jadmvz"}],["path",{d:"M2 14.499a5.5 5.5 0 0 0 9.591 3.675.6.6 0 0 1 .818.001A5.5 5.5 0 0 0 22 14.5c0-2.29-1.5-4-3-5.5l-5.492-5.312a2 2 0 0 0-3-.02L5 8.999c-1.5 1.5-3 3.2-3 5.5",key:"1aw2pz"}]]);e.s(["Spade",0,s],53751);let i=(0,a.default)("swords",[["polyline",{points:"14.5 17.5 3 6 3 3 6 3 17.5 14.5",key:"1hfsw2"}],["line",{x1:"13",x2:"19",y1:"19",y2:"13",key:"1vrmhu"}],["line",{x1:"16",x2:"20",y1:"16",y2:"20",key:"1bron3"}],["line",{x1:"19",x2:"21",y1:"21",y2:"19",key:"13pww6"}],["polyline",{points:"14.5 6.5 18 3 21 3 21 6 17.5 9.5",key:"hbey2j"}],["line",{x1:"5",x2:"9",y1:"14",y2:"18",key:"1hf58s"}],["line",{x1:"7",x2:"4",y1:"17",y2:"20",key:"pidxm4"}],["line",{x1:"3",x2:"5",y1:"19",y2:"21",key:"1pehsh"}]]);var l=e.i(27648);let o=[{id:"gandengyan",label:"干瞪眼",href:"/game/gandengyan/",icon:(0,t.jsx)(i,{size:16})},{id:"zhajinhua",label:"炸金花",href:"/game/zhajinhua/",icon:(0,t.jsx)(s,{size:16})}];e.s(["default",0,function({activeGame:e,closeSidebar:a}){return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(r.default,{href:"/",className:"sidebar-header sidebar-header-link",children:[(0,t.jsx)(n.ArrowLeft,{size:18}),(0,t.jsx)("h1",{children:"MOST PEOPLE"})]}),(0,t.jsx)("nav",{className:"sidebar-nav",children:o.map(n=>(0,t.jsxs)(r.default,{href:n.href,className:`sidebar-nav-btn ${e===n.id?"active":""}`,onClick:a,children:[n.icon,(0,t.jsx)("span",{children:n.label})]},n.id))}),(0,t.jsx)(l.default,{})]})}],53881);var c=e.i(71645);let u="game",d="mostbox.game.event",h=["gandengyan","zhajinhua"],p="ABCDEFGHJKLMNPQRSTUVWXYZ23456789";function f(e){let t=String(e||"").trim().toLowerCase();return h.includes(t)?t:""}function m(e){return String(e||"").trim().toUpperCase().replace(/[^A-Z0-9]/g,"").slice(0,8)}function y(e){return/^[A-Z0-9]{4,8}$/.test(String(e||""))}function g(){let e="";for(let t=0;t<6;t++)e+=p[function(e){if(globalThis.crypto?.getRandomValues){let t=new Uint32Array(1);return globalThis.crypto.getRandomValues(t),t[0]%e}return Math.floor(Math.random()*e)}(p.length)];return e}function b(e,t){let r=f(e),n=m(t);return r&&y(n)?`game-${r}-${n.toLowerCase()}`:""}function j({gameId:e,roomCode:t,event:r,payload:n}){var a;let s=f(e);return{kind:d,version:1,gameId:s,roomCode:m(t),event:String(r||""),eventId:(a=s||"game",`${a}_${Date.now()}_${function(){let e=new Uint8Array(4);if(globalThis.crypto?.getRandomValues)globalThis.crypto.getRandomValues(e);else for(let t=0;t<e.length;t++)e[t]=Math.floor(256*Math.random());return[...e].map(e=>e.toString(16).padStart(2,"0")).join("")}()}`),payload:n||{}}}function v(e,t={}){try{let r=JSON.parse(String(e||""));if(!r||r.kind!==d||1!==r.version||"string"!=typeof r.event||"string"!=typeof r.eventId)return null;let n=f(r.gameId),a=m(r.roomCode);if(!n||!y(a)||t.gameId&&n!==f(t.gameId)||t.roomCode&&a!==m(t.roomCode))return null;return{...r,gameId:n,roomCode:a,payload:r.payload&&"object"==typeof r.payload?r.payload:{}}}catch{return null}}function x(e,t){var r;if(!e||"object"!=typeof e)return null;let n=k(e.address||t);if(!n||k(t)!==n)return null;let a=String(e.name||"").trim().slice(0,50)||((r=n)?`${r.slice(0,6)}...${r.slice(-4)}`:"");return{address:n,name:a,publicKey:String(e.publicKey||"").trim(),joinedAt:Number(e.joinedAt||Date.now())}}function k(e){let t=String(e||"").trim();return/^0x[a-fA-F0-9]{40}$/.test(t)?t.toLowerCase():""}function w(e,t,r){let n=t.get(r.address);n?Object.assign(n,r):(e.push(r),t.set(r.address,r))}function C(e){return[...e].sort((e,t)=>Number(e.timestamp||0)-Number(t.timestamp||0))}e.s(["GAME_CHANNEL_TYPE",0,u,"createGameEvent",0,j,"createGameRoomCode",0,g,"deriveGameRoomLobby",0,function(e=[],t={}){let r=[],n=new Map,a="";for(let s of C(e)){let e=v(s.content,t);if(e){if("room:create"===e.event){let t=x(e.payload?.player,s.author);if(!t)continue;a||(a=t.address),w(r,n,t);continue}if("player:join"===e.event){let t=x(e.payload?.player,s.author);t&&w(r,n,t)}}}return{gameId:f(t.gameId),roomCode:m(t.roomCode),hostAddress:a,players:r}},"gameRoomCodeToChannelName",0,b,"getLatestGameState",0,function(e=[],t={}){let r=null;for(let n of C(e)){let e=v(n.content,t);if(!e||"room:state"!==e.event)continue;let a=Number(e.payload?.seq||0);(!r||a>=Number(r.payload?.seq||0))&&(r=e)}return r},"normalizeGameRoomCode",0,m,"parseGameEvent",0,v],99591);var S=e.i(87884),N=e.i(23952),M=e.i(26913),A=e.i(3593),I=e.i(71192);async function $(e,t,r,n,a,s){let i=j({gameId:r,roomCode:n,event:a,payload:s});await S.channelApi.sendChannelMessage({channelName:e,content:JSON.stringify(i),author:t.address,authorName:E(t)})}function E(e){return e.displayName||e.username}e.s(["useGameRoom",0,function({gameId:e,onError:t,getPlayerPayload:r}){let n=(0,A.useAppStore)(e=>e.hasBackend),a=(0,A.useAppStore)(e=>e.checkBackend),s=(0,A.useAppStore)(e=>e.openConnectModal),i=(0,I.useUserStore)(e=>e.identity),l=(0,I.useUserStore)(e=>e.openLoginModal),[o,d]=(0,c.useState)(""),[h,p]=(0,c.useState)(""),[f,y]=(0,c.useState)(!1),x=!0===n,k=(0,c.useCallback)(async(e,r)=>{let n=await (0,M.getApiErrorMessage)(e,r);t&&t(n)},[t]),w=(0,c.useCallback)(t=>!!v(t.content,{gameId:e,roomCode:o}),[e,o]),C=(0,c.useCallback)(t=>{let r=v(t.content,{gameId:e,roomCode:o});return r?`${t.author}-${r.eventId}`:`${t.author}-${t.timestamp}-${t.content}`},[e,o]),{clearMessages:z,connected:R,messages:P,sendMessage:L,syncMessages:_}=(0,N.useChannelMessages)({isReady:x,enabled:!!i,channelName:h,limit:500,acceptMessage:w,getMessageKey:C,onSyncError:e=>k(e,"无法读取房间记录")}),O=(0,c.useMemo)(()=>P.map(t=>({message:t,event:v(t.content,{gameId:e,roomCode:o})})).filter(e=>e.event),[e,P,o]),T=(0,c.useCallback)(()=>i?!!x||(s(),!1):(l(),!1),[x,s,l,i]);(0,c.useEffect)(()=>{null===n&&a()},[a,n]);let U=(0,c.useCallback)(async(n,a=!1)=>{if(!T()||!i)return!1;let s=a?g():m(n),l=b(e,s);if(!l)return t&&t("请输入 4-8 位房间码"),!1;y(!0);try{var o;return await S.channelApi.createChannel(l,u),await $(l,i,e,s,a?"room:create":"player:join",{player:r?r(i):{address:(o=i).address,name:E(o),publicKey:"",joinedAt:Date.now()}}),d(s),p(l),z(),!0}catch(e){return await k(e,a?"创建房间失败":"进入房间失败"),!1}finally{y(!1)}},[T,e,r,t,k,z,i]),K=(0,c.useCallback)(()=>U("",!0),[U]),D=(0,c.useCallback)(e=>U(e),[U]),B=(0,c.useCallback)(async(t,r={})=>{if(!T()||!i||!h||!o)return!1;let n=j({gameId:e,roomCode:o,event:t,payload:r}),a=JSON.stringify(n);try{return await L({channelName:h,content:a,author:i.address,authorName:E(i),optimisticId:`${i.address}-${n.eventId}`}),!0}catch(e){return await k(e,"发送房间事件失败"),!1}},[h,T,e,k,o,L,i]);return{channelName:h,connected:R,createRoom:K,ensureReady:T,isBackendReady:x,joinRoom:D,joining:f,messages:P,roomCode:o,roomEvents:O,sendRoomEvent:B,setRoomCode:d,syncMessages:_,userIdentity:i}}],34471)},39307,e=>{"use strict";var t=e.i(18050),r=e.i(71645),n=e.i(8734),a=e.i(72382),s=e.i(96699),i=e.i(21357);let l=(0,e.i(56420).default)("refresh-ccw",[["path",{d:"M21 12a9 9 0 0 0-9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"14sxne"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}],["path",{d:"M3 12a9 9 0 0 0 9 9 9.75 9.75 0 0 0 6.74-2.74L21 16",key:"1hlbsb"}],["path",{d:"M16 16h5v5",key:"ccwih5"}]]);var o=e.i(53751),c=e.i(35965),u=e.i(59665),d=e.i(53881),h=e.i(34471),p=e.i(3593),f=e.i(71192);let m=[10,20,50,100],y=["2","3","4","5","6","7","8","9","10","J","Q","K","A"],g=["D","C","H","S"],b=new Map(y.map((e,t)=>[e,t+2])),j=new Map(g.map((e,t)=>[e,t+1])),v={1:"散牌",2:"对子",3:"顺子",4:"金花",5:"顺金",6:"豹子"};function x(e){return String(e||"").trim().toUpperCase().replace(/[^A-Z0-9]/g,"").slice(0,8)}function k(e="zhajinhua"){return`${e}_${Date.now()}_${function(){let e=new Uint8Array(4);if(globalThis.crypto?.getRandomValues)globalThis.crypto.getRandomValues(e);else for(let t=0;t<e.length;t++)e[t]=Math.floor(256*Math.random());return[...e].map(e=>e.toString(16).padStart(2,"0")).join("")}()}`}function w(){let e=[];for(let t of g)for(let r of y)e.push(`${r}${t}`);return e}function C(e){let t=String(e||"").trim().toUpperCase(),r=t.slice(-1),n=t.slice(0,-1);if(!b.has(n)||!j.has(r))throw Error(`Invalid card: ${e}`);return{id:`${n}${r}`,rank:n,suit:r,rankValue:b.get(n),suitValue:j.get(r)}}function S(e){let t;if(!Array.isArray(e)||3!==e.length)throw Error("炸金花手牌必须是 3 张牌");let r=e.map(C),n=r.map(e=>e.rankValue),a=new Map;for(let e of n)a.set(e,(a.get(e)||0)+1);let s=1===new Set(r.map(e=>e.suit)).size,i=3!==(t=[...new Set(n)].sort((e,t)=>e-t)).length?0:2===t[0]&&3===t[1]&&14===t[2]?3:t[0]+1===t[1]&&t[1]+1===t[2]?t[2]:0,l=[...n].sort((e,t)=>t-e),o=Math.max(...r.map(e=>e.suitValue)),c=1,u=l;return 1===a.size?(c=6,u=[l[0]]):i&&s?(c=5,u=[i]):s?(c=4,u=l):i?(c=3,u=[i]):2===a.size&&(c=2,u=[[...a.entries()].find(([,e])=>2===e)[0],[...a.entries()].find(([,e])=>1===e)[0]]),{category:c,label:v[c],tiebreakers:u,tieSuit:o,cards:r.map(e=>e.id)}}function N(e){return e&&"object"==typeof e&&e.roundId&&Array.isArray(e.players)?{roomCode:x(e.roomCode),roundId:String(e.roundId),status:"finished"===e.status?"finished":"playing",host:R(e.host),seq:Number(e.seq)||1,startedAt:Number(e.startedAt)||Date.now(),ante:Number(e.ante)||10,pot:Math.max(0,Number(e.pot)||0),currentBet:Math.max(0,Number(e.currentBet)||10),turnAddress:R(e.turnAddress),players:e.players.map(z).filter(Boolean),lastAction:String(e.lastAction||""),winner:e.winner?R(e.winner):null,showdown:e.showdown&&"object"==typeof e.showdown?P(e.showdown):null,appliedEventIds:Array.isArray(e.appliedEventIds)?e.appliedEventIds.map(String):[]}:null}function M(e,t,r){let n=N(e);if(!n||"playing"!==n.status)return{ok:!1,error:"当前没有进行中的牌局"};let a=R(r),s=n.players.find(e=>e.address===a);if(!s||"active"!==s.status)return{ok:!1,error:"玩家不在本轮牌局中"};if(n.turnAddress!==a)return{ok:!1,error:"还没有轮到你操作"};let i=t?.action;if(!["look","call","raise","compare","fold"].includes(i))return{ok:!1,error:"未知操作"};if("look"===i)return s.looked?{ok:!1,error:"已经看过牌"}:{ok:!0};if("call"===i){let e=Math.max(0,n.currentBet-s.bet);return s.chips>=e?{ok:!0}:{ok:!1,error:"筹码不足,不能跟注"}}if("raise"===i){let e=Number(t.amount);if(!m.includes(e))return{ok:!1,error:"加注档位无效"};let r=n.currentBet+e-s.bet;return s.chips>=r?{ok:!0}:{ok:!1,error:"筹码不足,不能加注"}}if("compare"===i){let e=R(t.target),r=n.players.find(t=>t.address===e);if(!e||e===a||!r||"active"!==r.status)return{ok:!1,error:"请选择有效的比牌对象"};let i=Math.max(0,n.currentBet-s.bet);return s.chips>=i?{ok:!0}:{ok:!1,error:"筹码不足,不能比牌"}}return{ok:!0}}function A(e){return(e?.players||[]).filter(e=>"active"===e.status)}function I(e,t){let r=Math.max(0,e.currentBet-t.bet);t.chips-=r,t.bet+=r,e.pot+=r}function $(e,t){var r,n;let a,s=A(e);return 1===s.length?(r=e,n=s[0].address,(a=r.players.find(e=>e.address===n))&&(a.chips+=r.pot),r.status="finished",r.winner=n,r.turnAddress="",r.showdown=r.hands?P(r.hands):null,r.lastAction=a?`${a.name} 赢得 ${r.pot} 筹码`:"本局结束",r.pot=0,E(r)):(e.turnAddress=function(e,t){let r=e.players,n=Math.max(0,r.findIndex(e=>e.address===R(t)));for(let e=1;e<=r.length;e++){let t=r[(n+e)%r.length];if("active"===t.status)return t.address}return""}(e,t),E(e))}function E(e){return e.seq=Number(e.seq||0)+1,{ok:!0,state:e}}function z(e){var t;if(!e||"object"!=typeof e)return null;let r=R(e.address);return r?{address:r,name:String(e.name||((t=r)?`${t.slice(0,6)}...${t.slice(-4)}`:"")).slice(0,50),publicKey:String(e.publicKey||""),chips:Math.max(0,Number(e.chips)||0),status:"folded"===e.status?"folded":"active",looked:!0===e.looked,bet:Math.max(0,Number(e.bet)||0)}:null}function R(e){let t=String(e||"").trim();return/^0x[a-fA-F0-9]{40}$/.test(t)?t.toLowerCase():""}function P(e){return JSON.parse(JSON.stringify(e))}var L=e.i(99591),_=e.i(66112),O=e.i(93957);let T="zhajinhua";function U(e,t){return String(e||"").toLowerCase()===String(t||"").toLowerCase()}function K(e=""){return e?`${e.slice(0,6)}...${e.slice(-4)}`:""}e.s(["default",0,function(){var e,y;let g,b=(0,p.useAppStore)(e=>e.isDarkMode),j=(0,p.useAppStore)(e=>e.setIsDarkMode),v=(0,p.useAppStore)(e=>e.addToast),C=(0,f.useUserStore)(e=>e.initializeUser),[z,D]=(0,r.useState)(""),[B,V]=(0,r.useState)(!1),[q,G]=(0,r.useState)(20),[J,F]=(0,r.useState)(""),[H,W]=(0,r.useState)({}),Z=(0,r.useRef)(null),Q=(0,r.useRef)(new Set),X=(0,h.useGameRoom)({gameId:T,onError:e=>v(e,"error"),getPlayerPayload:e=>{let t=(0,_.most25519)(e.danger);return{address:e.address,name:e.displayName||e.username,publicKey:t.public_key,joinedAt:Date.now()}}}),Y=(0,r.useMemo)(()=>X.userIdentity?.danger?(0,_.most25519)(X.userIdentity.danger):null,[X.userIdentity?.danger]);(0,r.useEffect)(()=>{C()},[C]),(0,r.useEffect)(()=>{let e=new URLSearchParams(window.location.search).get("room")?.toUpperCase();e&&D(e)},[]),(0,r.useEffect)(()=>{if(!X.roomCode)return;let e=`/game/zhajinhua?room=${X.roomCode}`;`${window.location.pathname}${window.location.search}`!==e&&window.history.replaceState(null,"",e)},[X.roomCode]);let ee=(0,r.useMemo)(()=>(0,L.deriveGameRoomLobby)(X.messages,{gameId:T,roomCode:X.roomCode}),[X.messages,X.roomCode]),et=(0,r.useMemo)(()=>(0,L.getLatestGameState)(X.messages,{gameId:T,roomCode:X.roomCode}),[X.messages,X.roomCode]),er=et?.payload?.round||null,en=er?.host||ee.hostAddress,ea=U(en,X.userIdentity?.address),es=X.userIdentity?.address?.toLowerCase()||"",ei=er?.players.find(e=>U(e.address,es)),el=ei||ee.players.find(e=>U(e.address,es)),eo=H[er?.roundId||""]||null,ec=(er?.showdown&&es?er.showdown[es]:null)||(ei?.looked?eo:null),eu=function(e,t){let r=(e?.players||[]).find(e=>e.address===R(t));if(!e||"playing"!==e.status||!r||"active"!==r.status||e.turnAddress!==r.address)return[];let n=[];return r.looked||n.push("look"),M(e,{action:"call"},r.address).ok&&n.push("call"),m.some(t=>M(e,{action:"raise",amount:t},r.address).ok)&&n.push("raise"),A(e).length>1&&n.push("compare"),n.push("fold"),n}(er,es),ed=A(er),eh=ea&&function(e=[]){let t=e.filter(e=>Number(e.chips)>=10);return t.length>=2&&t.length<=5}(ee.players.map(e=>({...e,chips:er?.players.find(t=>U(t.address,e.address))?.chips??1e3}))),ep=X.roomCode&&1?`${window.location.origin}/game/zhajinhua?room=${X.roomCode}`:"";async function ef(){await X.createRoom()&&v("房间已创建","success")}async function em(e){e.preventDefault(),await X.joinRoom(z)&&v("已进入房间","success")}async function ey(){ep&&(await navigator.clipboard.writeText(ep),V(!0),setTimeout(()=>V(!1),1400))}async function eg(e){return X.sendRoomEvent("room:state",{round:function(e){if(!e)return null;let t={...e};return delete t.hands,P(t)}(e),seq:e.seq})}async function eb(){if(!X.userIdentity||!Y||!eh)return void v("至少需要 2 名有足够筹码的玩家","error");try{let e=ee.players.map(e=>({...e,chips:er?.players.find(t=>U(t.address,e.address))?.chips??1e3})),t=function({roomCode:e,players:t,hostAddress:r,roundId:n=k("round"),random:a=Math.random}){let s=t.filter(e=>Number(e.chips)>=10).slice(0,5);if(s.length<2)throw Error("至少需要 2 名有足够筹码的玩家");let i=function(e=w(),t=Math.random){let r=[...e];for(let e=r.length-1;e>0;e--){let n=Math.floor(t()*(e+1));[r[e],r[n]]=[r[n],r[e]]}return r}(w(),a),l={},o=s.map((e,t)=>{let r=i.slice(3*t,3*t+3);return l[e.address]=r,{address:e.address,name:e.name,publicKey:e.publicKey,chips:Number(e.chips)-10,status:"active",looked:!1,bet:10}}),c=Math.max(0,o.findIndex(e=>e.address===R(r))),u=o[(c+1)%o.length].address;return{roomCode:x(e),roundId:n,status:"playing",host:R(r),seq:1,startedAt:Date.now(),ante:10,pot:10*o.length,currentBet:10,turnAddress:u,players:o,lastAction:"本局开始",winner:null,showdown:null,appliedEventIds:[],hands:l}}({roomCode:X.roomCode,players:e,hostAddress:X.userIdentity.address});for(let e of(Z.current=t.hands,Q.current.clear(),await eg(t),t.players)){let r=(0,_.mostBoxEncrypt)(JSON.stringify(t.hands[e.address]),{senderPrivateKey:Y.private_key,recipientPublicKey:e.publicKey});await X.sendRoomEvent("deal:private",{roundId:t.roundId,recipient:e.address,senderPublicKey:Y.public_key,encrypted:r})}W(e=>({...e,[t.roundId]:t.hands[X.userIdentity.address.toLowerCase()]})),v("新一局已开始","success")}catch(e){v(e instanceof Error?e.message:"开局失败","error")}}async function ej(e,t={}){if(!er||!X.userIdentity)return;let r=function({roundId:e,action:t,amount:r,target:n}){return{roundId:e,eventId:k("action"),action:t,amount:r,target:n}}({roundId:er.roundId,action:e,amount:t.amount,target:t.target});await X.sendRoomEvent("player:action",{actionEvent:r})}(0,r.useEffect)(()=>{if(er&&X.userIdentity&&Y&&en)for(let e of X.roomEvents){let t=e.event;if(!t||"deal:private"!==t.event)continue;let r=t.payload;if(r.roundId!==er.roundId||!U(r.recipient,X.userIdentity.address))continue;let n=(0,_.mostBoxDecrypt)(r.encrypted||"",{senderPublicKey:r.senderPublicKey||"",recipientPrivateKey:Y.private_key});if(n)try{let e=JSON.parse(n);Array.isArray(e)&&W(t=>({...t,[er.roundId]:e.map(String)}))}catch{}}},[er?.roundId,X.roomEvents,X.userIdentity,en,Y?.private_key]),(0,r.useEffect)(()=>{if(!ea||!er||"playing"!==er.status)return;let e=Z.current;if(!e)return;let t=X.roomEvents.filter(e=>{let t=e.event;if(!t||"player:action"!==t.event)return!1;let r=t.payload.actionEvent;return!(!r||r.roundId!==er.roundId||Q.current.has(r.eventId)||er.appliedEventIds?.includes(r.eventId))});if(0===t.length)return;let r=!1;return async function(){let n,a=(n=N(er))&&e&&"object"==typeof e?{...n,hands:P(e)}:null;if(a)for(let e of t){if(r)return;let t=(e.event?.payload).actionEvent,n=function(e,t,r){let n=M(e,t,r);if(!n.ok)return{ok:!1,error:n.error,state:e};let a=P(e),s=R(r),i=a.players.find(e=>e.address===s),l=String(t.eventId);if(a.appliedEventIds?.includes(l))return{ok:!0,state:a,duplicate:!0};if(Array.isArray(a.appliedEventIds)||(a.appliedEventIds=[]),a.appliedEventIds.push(l),"look"===t.action)return i.looked=!0,a.lastAction=`${i.name} 看牌`,E(a);if("fold"===t.action)return i.status="folded",a.lastAction=`${i.name} 弃牌`,$(a,s);if("call"===t.action)return I(a,i),a.lastAction=`${i.name} 跟注`,$(a,s);if("raise"===t.action){let e=Number(t.amount);return a.currentBet+=e,I(a,i),a.lastAction=`${i.name} 加注 ${e}`,$(a,s)}if("compare"===t.action){I(a,i);let e=R(t.target),r=a.players.find(t=>t.address===e),n=function(e,t){let r=S(e),n=S(t);if(r.category!==n.category)return r.category-n.category;let a=function(e,t){let r=Math.max(e.length,t.length);for(let n=0;n<r;n++){let r=e[n]||0,a=t[n]||0;if(r!==a)return r-a}return 0}(r.tiebreakers,n.tiebreakers);return 0!==a?a:r.tieSuit-n.tieSuit}(a.hands?.[s]||[],a.hands?.[e]||[])>=0?r:i;return n.status="folded",a.lastAction=`${i.name} 与 ${r.name} 比牌,${n.name} 出局`,$(a,s)}return{ok:!1,error:"未知操作",state:e}}(a,t,e.message.author);if(n.ok&&(a=n.state,Z.current=n.state.hands,await eg(n.state)&&Q.current.add(t.eventId),"finished"===n.state.status))break}}(),()=>{r=!0}},[er?.roundId,er?.seq,er?.status,X.roomEvents,ea]);let ev=er?.status==="playing"?U(er.turnAddress,es)?"轮到你操作":er.turnAddress?`等待 ${e=er.turnAddress,y=ee.players,g=e.toLowerCase(),y.find(e=>e.address===g)?.name||K(e)}`:"进行中":er?.status==="finished"?"本局结束":"等待开局",ex=ed.filter(e=>!U(e.address,es));return(0,t.jsx)(u.default,{sidebar:({closeSidebar:e})=>(0,t.jsx)(d.default,{activeGame:"zhajinhua",closeSidebar:e}),headerTitle:(0,t.jsxs)("div",{className:"zjh-header-title",children:[(0,t.jsx)("h2",{className:"header-title",children:"游戏 · 炸金花"}),X.roomCode&&(0,t.jsxs)("span",{className:"header-badge",children:["房间 ",X.roomCode]})]}),headerRight:(0,t.jsxs)("div",{className:"header-right-actions",children:[X.roomCode&&(0,t.jsxs)("button",{className:"btn btn-secondary",onClick:ey,children:[(0,t.jsx)(n.Copy,{size:16}),B?"已复制":"分享房间"]}),(0,t.jsx)("button",{className:"btn btn-icon",onClick:()=>j(!b),title:"切换主题",children:b?(0,t.jsx)(c.Sun,{size:16}):(0,t.jsx)(s.Moon,{size:16})})]}),children:(0,t.jsx)("main",{className:"zjh-page",children:X.roomCode?(0,t.jsxs)("div",{className:"zjh-board",children:[(0,t.jsxs)("section",{className:"zjh-table",children:[(0,t.jsxs)("div",{className:"zjh-table-center",children:[(0,t.jsx)("span",{children:"底池"}),(0,t.jsx)("strong",{children:er?.pot||0}),(0,t.jsxs)("small",{children:["当前注 ",er?.currentBet||0]})]}),(0,t.jsx)("div",{className:"zjh-seats",children:ee.players.map(e=>{let r=er?.players.find(t=>U(t.address,e.address)),n=er?.turnAddress===e.address,a=er?.winner===e.address;return(0,t.jsxs)("div",{className:`zjh-seat ${n?"turn":""} ${a?"winner":""}`,children:[(0,t.jsx)("img",{className:"zjh-seat-avatar",src:(0,O.generateAvatar)(e.address),alt:"avatar"}),(0,t.jsxs)("div",{className:"zjh-seat-main",children:[(0,t.jsx)("strong",{children:e.name}),(0,t.jsx)("span",{children:K(e.address)})]}),(0,t.jsxs)("div",{className:"zjh-seat-meta",children:[(0,t.jsxs)("span",{children:[r?.chips??1e3," 筹码"]}),(0,t.jsx)("span",{children:r?.status==="folded"?"已弃牌":r?.looked?"已看牌":er?"在局中":"等待开局"})]})]},e.address)})})]}),(0,t.jsxs)("aside",{className:"zjh-panel",children:[(0,t.jsxs)("div",{className:"zjh-panel-section",children:[(0,t.jsxs)("div",{className:"zjh-panel-title",children:[(0,t.jsx)(o.Spade,{size:16}),(0,t.jsx)("span",{children:"我的手牌"})]}),(0,t.jsx)("div",{className:"zjh-hand",children:ec?ec.map(e=>{let r,n,a=(n=(r=String(e||"")).slice(-1),{rank:r.slice(0,-1),suit:({S:"S",H:"H",C:"C",D:"D"})[n]||n,color:"H"===n||"D"===n?"red":"black"});return(0,t.jsxs)("div",{className:`zjh-card ${a.color}`,children:[(0,t.jsx)("span",{children:a.rank}),(0,t.jsx)("strong",{children:a.suit})]},e)}):[0,1,2].map(e=>(0,t.jsx)("div",{className:"zjh-card back",children:(0,t.jsx)(o.Spade,{size:18})},e))}),(0,t.jsx)("p",{className:"zjh-hand-label",children:ec?S(ec).label:eo?"未看牌":"等待房主发牌"})]}),(0,t.jsxs)("div",{className:"zjh-panel-section",children:[(0,t.jsxs)("div",{className:"zjh-panel-title",children:[(0,t.jsx)(i.Play,{size:16}),(0,t.jsx)("span",{children:"操作"})]}),ea?(0,t.jsxs)("button",{className:"btn btn-primary btn-full",onClick:eb,disabled:!eh||er?.status==="playing",children:[(0,t.jsx)(l,{size:16}),"开始本局"]}):(0,t.jsx)("p",{className:"zjh-muted",children:"等待房主开始或继续牌局。"}),(0,t.jsxs)("div",{className:"zjh-actions",children:[(0,t.jsxs)("button",{className:"btn btn-secondary",disabled:!eu.includes("look"),onClick:()=>ej("look"),children:[(0,t.jsx)(a.Eye,{size:16}),"看牌"]}),(0,t.jsx)("button",{className:"btn btn-secondary",disabled:!eu.includes("call"),onClick:()=>ej("call"),children:"跟注"}),(0,t.jsx)("button",{className:"btn btn-secondary",disabled:!eu.includes("fold"),onClick:()=>ej("fold"),children:"弃牌"})]}),(0,t.jsxs)("div",{className:"zjh-raise-row",children:[(0,t.jsx)("select",{className:"input input-compact",value:q,onChange:e=>G(Number(e.target.value)),children:m.map(e=>(0,t.jsxs)("option",{value:e,children:["加 ",e]},e))}),(0,t.jsx)("button",{className:"btn btn-secondary",disabled:!eu.includes("raise"),onClick:()=>ej("raise",{amount:q}),children:"加注"})]}),(0,t.jsxs)("div",{className:"zjh-raise-row",children:[(0,t.jsxs)("select",{className:"input input-compact",value:J,onChange:e=>F(e.target.value),children:[(0,t.jsx)("option",{value:"",children:"选择比牌对象"}),ex.map(e=>(0,t.jsx)("option",{value:e.address,children:e.name},e.address))]}),(0,t.jsx)("button",{className:"btn btn-secondary",disabled:!eu.includes("compare")||!J,onClick:()=>ej("compare",{target:J}),children:"比牌"})]})]}),(0,t.jsxs)("div",{className:"zjh-panel-section",children:[(0,t.jsx)("div",{className:"zjh-panel-title",children:"状态"}),(0,t.jsxs)("div",{className:"zjh-status-grid",children:[(0,t.jsx)("span",{children:"房主"}),(0,t.jsx)("strong",{children:en?K(en):"-"}),(0,t.jsx)("span",{children:"我的筹码"}),(0,t.jsx)("strong",{children:el?.chips??1e3}),(0,t.jsx)("span",{children:"本轮"}),(0,t.jsx)("strong",{children:ev}),(0,t.jsx)("span",{children:"提示"}),(0,t.jsx)("strong",{children:er?.lastAction||"等待玩家加入"})]})]})]})]}):(0,t.jsxs)("section",{className:"zjh-welcome",children:[(0,t.jsx)("div",{className:"zjh-welcome-icon",children:(0,t.jsx)(o.Spade,{size:36})}),(0,t.jsx)("h2",{children:"P2P 炸金花"}),(0,t.jsx)("p",{children:"创建房间邀请朋友,房主在线开始牌局并推进状态。"}),(0,t.jsxs)("div",{className:"zjh-welcome-actions",children:[(0,t.jsxs)("button",{className:"btn btn-primary",disabled:X.joining,onClick:ef,children:[(0,t.jsx)(i.Play,{size:16}),"创建房间"]}),(0,t.jsxs)("form",{className:"zjh-room-input-row",onSubmit:em,children:[(0,t.jsx)("input",{className:"input input-compact",value:z,onChange:e=>D(e.target.value.toUpperCase()),placeholder:"输入房间码",maxLength:8}),(0,t.jsx)("button",{className:"btn btn-icon",disabled:X.joining||!z,children:(0,t.jsx)(i.Play,{size:16})})]})]})]})})})}],39307)}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,11241,e=>{"use strict";let t=(0,e.i(56420).default)("arrow-left",[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]]);e.s(["ArrowLeft",0,t],11241)},95057,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={formatUrl:function(){return a},formatWithValidation:function(){return c},urlObjectKeys:function(){return i}};for(var o in n)Object.defineProperty(r,o,{enumerable:!0,get:n[o]});let l=e.r(90809)._(e.r(98183)),u=/https?|ftp|gopher|file/;function a(e){let{auth:t,hostname:r}=e,n=e.protocol||"",o=e.pathname||"",a=e.hash||"",i=e.query||"",c=!1;t=t?encodeURIComponent(t).replace(/%3A/i,":")+"@":"",e.host?c=t+e.host:r&&(c=t+(~r.indexOf(":")?`[${r}]`:r),e.port&&(c+=":"+e.port)),i&&"object"==typeof i&&(i=String(l.urlQueryToSearchParams(i)));let s=e.search||i&&`?${i}`||"";return n&&!n.endsWith(":")&&(n+=":"),e.slashes||(!n||u.test(n))&&!1!==c?(c="//"+(c||""),o&&"/"!==o[0]&&(o="/"+o)):c||(c=""),a&&"#"!==a[0]&&(a="#"+a),s&&"?"!==s[0]&&(s="?"+s),o=o.replace(/[?#]/g,encodeURIComponent),s=s.replace("#","%23"),`${n}${c}${o}${s}${a}`}let i=["auth","hash","host","hostname","href","path","pathname","port","protocol","query","search","slashes"];function c(e){return a(e)}},18581,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"useMergedRef",{enumerable:!0,get:function(){return o}});let n=e.r(71645);function o(e,t){let r=(0,n.useRef)(null),o=(0,n.useRef)(null);return(0,n.useCallback)(n=>{if(null===n){let e=r.current;e&&(r.current=null,e());let t=o.current;t&&(o.current=null,t())}else e&&(r.current=l(e,n)),t&&(o.current=l(t,n))},[e,t])}function l(e,t){if("function"!=typeof e)return e.current=t,()=>{e.current=null};{let r=e(t);return"function"==typeof r?r:()=>e(null)}}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},73668,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"isLocalURL",{enumerable:!0,get:function(){return l}});let n=e.r(18967),o=e.r(52817);function l(e){if(!(0,n.isAbsoluteUrl)(e))return!0;try{let t=(0,n.getLocationOrigin)(),r=new URL(e,t);return r.origin===t&&(0,o.hasBasePath)(r.pathname)}catch(e){return!1}}},84508,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"errorOnce",{enumerable:!0,get:function(){return n}});let n=e=>{}},22016,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={default:function(){return v},useLinkStatus:function(){return g}};for(var o in n)Object.defineProperty(r,o,{enumerable:!0,get:n[o]});let l=e.r(90809),u=e.r(18050),a=l._(e.r(71645)),i=e.r(95057),c=e.r(8372),s=e.r(18581),f=e.r(18967),d=e.r(5550);e.r(33525);let p=e.r(88540),h=e.r(91949),y=e.r(73668),b=e.r(9396);function v(t){var r,n;let o,l,v,[g,j]=(0,a.useOptimistic)(h.IDLE_LINK_STATUS),_=(0,a.useRef)(null),{href:P,as:x,children:O,prefetch:k=null,passHref:C,replace:S,shallow:T,scroll:R,onClick:L,onMouseEnter:M,onTouchStart:E,legacyBehavior:N=!1,onNavigate:A,transitionTypes:U,ref:w,unstable_dynamicOnHover:I,...K}=t;o=O,N&&("string"==typeof o||"number"==typeof o)&&(o=(0,u.jsx)("a",{children:o}));let $=a.default.useContext(c.AppRouterContext),z=!1!==k,B=!1!==k?null===(n=k)||"auto"===n?b.FetchStrategy.PPR:b.FetchStrategy.Full:b.FetchStrategy.PPR,D="string"==typeof(r=x||P)?r:(0,i.formatUrl)(r);if(N){if(o?.$$typeof===Symbol.for("react.lazy"))throw Object.defineProperty(Error("`<Link legacyBehavior>` received a direct child that is either a Server Component, or JSX that was loaded with React.lazy(). This is not supported. Either remove legacyBehavior, or make the direct child a Client Component that renders the Link's `<a>` tag."),"__NEXT_ERROR_CODE",{value:"E863",enumerable:!1,configurable:!0});l=a.default.Children.only(o)}let F=N?l&&"object"==typeof l&&l.ref:w,W=a.default.useCallback(e=>(null!==$&&(_.current=(0,h.mountLinkInstance)(e,D,$,B,z,j)),()=>{_.current&&((0,h.unmountLinkForCurrentNavigation)(_.current),_.current=null),(0,h.unmountPrefetchableInstance)(e)}),[z,D,$,B,j]),q={ref:(0,s.useMergedRef)(W,F),onClick(t){N||"function"!=typeof L||L(t),N&&l.props&&"function"==typeof l.props.onClick&&l.props.onClick(t),!$||t.defaultPrevented||function(t,r,n,o,l,u,i){if("u">typeof window){let c,{nodeName:s}=t.currentTarget;if("A"===s.toUpperCase()&&((c=t.currentTarget.getAttribute("target"))&&"_self"!==c||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey||t.nativeEvent&&2===t.nativeEvent.which)||t.currentTarget.hasAttribute("download"))return;if(!(0,y.isLocalURL)(r)){o&&(t.preventDefault(),location.replace(r));return}if(t.preventDefault(),u){let e=!1;if(u({preventDefault:()=>{e=!0}}),e)return}let{dispatchNavigateAction:f}=e.r(99781);a.default.startTransition(()=>{f(r,o?"replace":"push",!1===l?p.ScrollBehavior.NoScroll:p.ScrollBehavior.Default,n.current,i)})}}(t,D,_,S,R,A,U)},onMouseEnter(e){N||"function"!=typeof M||M(e),N&&l.props&&"function"==typeof l.props.onMouseEnter&&l.props.onMouseEnter(e),$&&z&&(0,h.onNavigationIntent)(e.currentTarget,!0===I)},onTouchStart:function(e){N||"function"!=typeof E||E(e),N&&l.props&&"function"==typeof l.props.onTouchStart&&l.props.onTouchStart(e),$&&z&&(0,h.onNavigationIntent)(e.currentTarget,!0===I)}};return(0,f.isAbsoluteUrl)(D)?q.href=D:N&&!C&&("a"!==l.type||"href"in l.props)||(q.href=(0,d.addBasePath)(D)),v=N?a.default.cloneElement(l,q):(0,u.jsx)("a",{...K,...q,children:o}),(0,u.jsx)(m.Provider,{value:g,children:v})}e.r(84508);let m=(0,a.createContext)(h.IDLE_LINK_STATUS),g=()=>(0,a.useContext)(m);("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},18566,(e,t,r)=>{t.exports=e.r(76562)},36768,e=>{"use strict";var t=e.i(18050),r=e.i(18566),n=e.i(22016),o=e.i(56420);let l=(0,o.default)("compass",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m16.24 7.76-1.804 5.411a2 2 0 0 1-1.265 1.265L7.76 16.24l1.804-5.411a2 2 0 0 1 1.265-1.265z",key:"9ktpf1"}]]);var u=e.i(11241);let a=(0,o.default)("house",[["path",{d:"M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8",key:"5wwlr5"}],["path",{d:"M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z",key:"r6nss1"}]]);e.s(["default",0,function(){let e=(0,r.useRouter)();return(0,t.jsx)("div",{className:"not-found-page",children:(0,t.jsxs)("div",{className:"not-found-card",children:[(0,t.jsx)("div",{className:"not-found-icon",children:(0,t.jsx)(l,{size:48,strokeWidth:1.5})}),(0,t.jsx)("h1",{className:"not-found-title",children:"页面未找到"}),(0,t.jsx)("p",{className:"not-found-desc",children:"你访问的页面似乎已经迷失在 P2P 网络中了"}),(0,t.jsxs)("div",{className:"not-found-actions",children:[(0,t.jsxs)("button",{onClick:()=>e.back(),className:"btn btn-secondary",children:[(0,t.jsx)(u.ArrowLeft,{size:16}),"上一页"]}),(0,t.jsxs)(n.default,{href:"/",className:"btn btn-primary",children:[(0,t.jsx)(a,{size:16}),"回首页"]})]})]})})}],36768)}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.zjh-page{background:radial-gradient(circle at 35% 25%, #34c75924, transparent 32%), radial-gradient(circle at 78% 18%, #ff95001f, transparent 28%), var(--bg-primary);flex:1;min-height:0;padding:20px;overflow:auto}.zjh-header-title{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.zjh-room-entry{border-bottom:1px solid var(--glass-border);flex-direction:column;gap:10px;padding:12px 10px;display:flex}.zjh-room-input-row{grid-template-columns:minmax(0,1fr) 36px;gap:8px;display:grid}.zjh-welcome{text-align:center;min-height:100%;color:var(--text-secondary);flex-direction:column;justify-content:center;align-items:center;gap:14px;display:flex}.zjh-welcome h2{color:var(--text-primary);font-size:26px}.zjh-welcome p{max-width:420px;line-height:1.7}.zjh-welcome-icon{border-radius:var(--radius-lg);color:#fff;width:72px;height:72px;box-shadow:var(--shadow-lg);background:linear-gradient(135deg,#1f8f5f,#284f7a);justify-content:center;align-items:center;display:flex}.zjh-welcome-actions{flex-wrap:wrap;justify-content:center;align-items:center;gap:10px;display:flex}.zjh-board{grid-template-columns:minmax(0,1fr) minmax(320px,380px);gap:18px;min-height:100%;display:grid}.zjh-table{background:linear-gradient(145deg, #0a533ee6, #163550eb), var(--glass-bg);min-height:560px;box-shadow:var(--shadow-lg);border:1px solid #ffffff2e;border-radius:8px;position:relative;overflow:hidden}.zjh-table:before{content:"";pointer-events:none;border:2px solid #ffffff2e;border-radius:8px;position:absolute;inset:24px}.zjh-table-center{color:#fff;background:#00000038;border:1px solid #ffffff38;border-radius:50%;flex-direction:column;justify-content:center;align-items:center;gap:5px;width:150px;height:150px;display:flex;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:inset 0 0 24px #00000029}.zjh-table-center span,.zjh-table-center small{opacity:.78;font-size:12px}.zjh-table-center strong{font-size:32px}.zjh-seats{z-index:1;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;padding:34px;display:grid;position:relative}.zjh-seat{color:#fff;background:#ffffff1a;border:1px solid #ffffff29;border-radius:8px;grid-template-columns:44px minmax(0,1fr);align-items:center;gap:10px;min-height:88px;padding:12px;display:grid}.zjh-seat.turn{border-color:#ffd666eb;box-shadow:0 0 0 2px #ffd6662e}.zjh-seat.winner{border-color:#30d158eb;box-shadow:0 0 0 2px #30d15833}.zjh-seat-avatar{object-fit:cover;border-radius:8px;width:44px;height:44px}.zjh-seat-main,.zjh-seat-meta{flex-direction:column;gap:4px;min-width:0;display:flex}.zjh-seat-main strong,.zjh-seat-main span,.zjh-seat-meta span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.zjh-seat-main strong{font-size:14px}.zjh-seat-main span,.zjh-seat-meta{opacity:.76;font-size:12px}.zjh-seat-meta{flex-direction:row;grid-column:1/-1;justify-content:space-between}.zjh-panel{flex-direction:column;gap:14px;min-width:0;display:flex}.zjh-panel-section{border:1px solid var(--glass-border);background:var(--glass-bg);-webkit-backdrop-filter:var(--blur-md);box-shadow:var(--glass-shadow);border-radius:8px;padding:16px}.zjh-panel-title{color:var(--text-primary);align-items:center;gap:8px;margin-bottom:12px;font-size:14px;font-weight:600;display:flex}.zjh-hand{grid-template-columns:repeat(3,72px);justify-content:center;gap:10px;display:grid}.zjh-card{aspect-ratio:5/7;color:#151515;background:#fff;border:1px solid #0000001f;border-radius:8px;flex-direction:column;justify-content:space-between;padding:9px;display:flex;box-shadow:0 8px 20px #0000002e}.zjh-card.red{color:#c51d34}.zjh-card span{font-size:18px;font-weight:700}.zjh-card strong{align-self:flex-end;font-size:26px}.zjh-card.back{color:#fff;background:repeating-linear-gradient(45deg,#ffffff1f 0 6px,#0000 6px 12px),linear-gradient(135deg,#243f7a,#752f4d);justify-content:center;align-items:center}.zjh-hand-label{text-align:center;color:var(--text-secondary);margin-top:10px;font-size:13px}.zjh-actions,.zjh-raise-row{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:10px;display:grid}.zjh-raise-row{grid-template-columns:minmax(0,1fr) 96px}.zjh-status-grid{grid-template-columns:76px minmax(0,1fr);align-items:start;gap:8px 12px;font-size:13px;display:grid}.zjh-status-grid span{color:var(--text-secondary)}.zjh-status-grid strong{color:var(--text-primary);overflow-wrap:anywhere;font-weight:600}.zjh-log-list{max-height:180px;color:var(--text-secondary);flex-direction:column;gap:7px;font-size:13px;display:flex;overflow:auto}.zjh-log-list span{background:var(--glass-bg-subtle);border-radius:8px;padding:7px 9px}.zjh-muted{color:var(--text-secondary);margin:0;font-size:13px;line-height:1.6}@media (max-width:980px){.zjh-board{grid-template-columns:1fr}.zjh-table{min-height:420px}}@media (max-width:640px){.zjh-page{padding:12px}.zjh-seats{grid-template-columns:1fr;padding:22px}.zjh-table-center{margin:24px auto 0;position:static;transform:none}.zjh-table:before{inset:14px}.zjh-hand{grid-template-columns:repeat(3,minmax(58px,72px))}.zjh-actions,.zjh-raise-row{grid-template-columns:1fr}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.page-module__bH9uOG__page{background:var(--bg-primary);min-height:calc(100vh - 64px);padding:18px}.page-module__bH9uOG__headerActions{align-items:center;gap:8px;display:flex}.page-module__bH9uOG__entry{grid-template-columns:minmax(0,1fr) 360px;align-items:center;gap:48px;max-width:1040px;min-height:calc(100vh - 116px);margin:0 auto;display:grid}.page-module__bH9uOG__entryBrand{align-items:center;gap:22px;display:flex}.page-module__bH9uOG__cardMark{width:112px;height:152px;box-shadow:var(--shadow-lg);color:#fff;background:#c93d32;border:8px solid #fff;border-radius:8px;flex:0 0 112px;place-items:center;font-size:70px;font-weight:900;display:grid}.page-module__bH9uOG__entryBrand h1{color:var(--text-primary);margin:0;font-size:64px;line-height:.95}.page-module__bH9uOG__entryBrand p{max-width:520px;color:var(--text-secondary);margin:18px 0 0;font-size:18px;line-height:1.7}.page-module__bH9uOG__entryPanel,.page-module__bH9uOG__panel,.page-module__bH9uOG__handPanel{border:1px solid var(--glass-border);background:var(--glass-bg);box-shadow:var(--glass-shadow);border-radius:8px}.page-module__bH9uOG__entryPanel{gap:16px;padding:22px;display:grid}.page-module__bH9uOG__accountLine,.page-module__bH9uOG__scoreMeta,.page-module__bH9uOG__roomBar,.page-module__bH9uOG__badges,.page-module__bH9uOG__actions{align-items:center;gap:10px;display:flex}.page-module__bH9uOG__accountLine{color:var(--text-secondary);justify-content:space-between;font-size:14px}.page-module__bH9uOG__accountLine strong{max-width:190px;color:var(--text-primary);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.page-module__bH9uOG__joinForm,.page-module__bH9uOG__joinForm label{gap:8px;display:grid}.page-module__bH9uOG__joinForm label{color:var(--text-secondary);font-size:14px}.page-module__bH9uOG__joinForm input{border:1px solid var(--glass-border);background:var(--bg-primary);width:100%;min-height:40px;color:var(--text-primary);border-radius:8px;padding:0 12px}.page-module__bH9uOG__status{color:var(--text-secondary);margin:0;font-size:14px}.page-module__bH9uOG__gameGrid{grid-template:"table side"minmax(360px,1fr)"hand side"/minmax(0,1fr) 320px;gap:14px;min-height:calc(100vh - 104px);display:grid}.page-module__bH9uOG__tablePanel{color:#fff;background:radial-gradient(circle,#ffffff2e,#0000 46%),#247658;border-radius:8px;grid-area:table;grid-template-rows:auto auto 1fr auto;gap:14px;min-height:360px;padding:16px;display:grid}.page-module__bH9uOG__roomBar{justify-content:space-between}.page-module__bH9uOG__roomBar div:first-child{gap:2px;display:grid}.page-module__bH9uOG__roomBar span,.page-module__bH9uOG__badges span{color:#ffffffc7;font-size:13px}.page-module__bH9uOG__badges{flex-wrap:wrap;justify-content:flex-end}.page-module__bH9uOG__dangerBadge{background:#c5312a47;border:1px solid #ffcd4794;border-radius:999px;padding:4px 9px;font-weight:800;color:#ffd66b!important}.page-module__bH9uOG__seats{grid-template-columns:repeat(auto-fit,minmax(168px,1fr));gap:10px;display:grid}.page-module__bH9uOG__player{color:#17211b;background:#ffffffeb;border:1px solid #17211b1f;border-radius:8px;align-items:center;gap:10px;min-width:0;padding:8px;display:flex}.page-module__bH9uOG__tablePanel .page-module__bH9uOG__player{color:#fff;background:#ffffff2e}.page-module__bH9uOG__active{outline:3px solid #f3cf5a}.page-module__bH9uOG__winner{outline:3px solid #7be39e}.page-module__bH9uOG__avatar{color:#fff;background:#17211b;border-radius:50%;flex:0 0 40px;place-items:center;width:40px;height:40px;font-size:13px;font-weight:900;display:grid}.page-module__bH9uOG__player strong,.page-module__bH9uOG__player span{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.page-module__bH9uOG__player span{opacity:.76;max-width:190px;font-size:12px}.page-module__bH9uOG__centerTable{grid-template-columns:120px minmax(0,1fr) 120px;align-items:center;gap:14px;display:grid}.page-module__bH9uOG__deckBox,.page-module__bH9uOG__playedBox{text-align:center;background:#0b221942;border-radius:8px}.page-module__bH9uOG__deckBox{gap:6px;padding:18px 8px;display:grid}.page-module__bH9uOG__deckBox span{opacity:.75;font-size:13px}.page-module__bH9uOG__deckBox strong{font-size:30px}.page-module__bH9uOG__playedBox{place-items:center;min-height:150px;padding:16px;display:grid}.page-module__bH9uOG__playedCards{flex-wrap:wrap;justify-content:center;gap:8px;margin-top:10px;display:flex}.page-module__bH9uOG__notice{text-align:center;background:#0000002e;border-radius:8px;padding:10px 12px;font-weight:800}.page-module__bH9uOG__sidePanel{grid-area:side;align-content:start;gap:12px;display:grid}.page-module__bH9uOG__panel{gap:12px;padding:14px;display:grid}.page-module__bH9uOG__panel h3{color:var(--text-primary);margin:0;font-size:15px}.page-module__bH9uOG__scoreMeta{color:var(--text-secondary);justify-content:space-between;font-size:13px}.page-module__bH9uOG__scoreRow{border-top:1px solid var(--glass-border);color:var(--text-primary);justify-content:space-between;padding-top:8px;display:flex}.page-module__bH9uOG__logPanel{max-height:280px;overflow:auto}.page-module__bH9uOG__logPanel p{color:var(--text-secondary);margin:0;font-size:13px;line-height:1.5}.page-module__bH9uOG__handPanel{grid-area:hand;gap:12px;padding:12px;display:grid}.page-module__bH9uOG__hand{gap:8px;min-height:118px;padding:4px 2px 10px;display:flex;overflow-x:auto}.page-module__bH9uOG__cardButton{background:0 0;border:0;border-radius:8px;flex:none;min-height:auto;padding:0;transition:transform .16s}.page-module__bH9uOG__picked{transform:translateY(-14px)}.page-module__bH9uOG__card{color:#17211b;text-align:left;background:#fff;border:1px solid #dbe1dc;border-radius:8px;grid-template-rows:auto 1fr;width:62px;height:92px;padding:7px;display:grid;box-shadow:0 8px 18px #0e16111f}.page-module__bH9uOG__card span{font-size:15px;font-weight:900}.page-module__bH9uOG__card i{place-self:end;font-size:22px;font-style:normal;font-weight:900}.page-module__bH9uOG__red{color:#c93d32}.page-module__bH9uOG__black{color:#17211b}.page-module__bH9uOG__small{width:46px;height:66px;padding:5px}.page-module__bH9uOG__small span{font-size:12px}.page-module__bH9uOG__small i{font-size:15px}.page-module__bH9uOG__actions{flex-wrap:wrap}.page-module__bH9uOG__preview{border:1px solid var(--glass-border);background:var(--bg-primary);min-height:46px;color:var(--text-secondary);border-radius:8px;flex:260px;padding:7px 10px;display:grid}.page-module__bH9uOG__preview strong{color:var(--text-primary);font-size:14px}.page-module__bH9uOG__preview span{text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.page-module__bH9uOG__valid{border-color:#176b4d70}@media (max-width:980px){.page-module__bH9uOG__entry{grid-template-columns:1fr;align-content:center}.page-module__bH9uOG__gameGrid{grid-template-columns:1fr;grid-template-areas:"table""hand""side"}}@media (max-width:640px){.page-module__bH9uOG__page{padding:10px}.page-module__bH9uOG__entryBrand{flex-direction:column;align-items:flex-start}.page-module__bH9uOG__entryBrand h1{font-size:42px}.page-module__bH9uOG__cardMark{border-width:6px;flex-basis:100px;width:74px;height:100px;font-size:46px}.page-module__bH9uOG__centerTable{grid-template-columns:1fr}.page-module__bH9uOG__actions>button{flex:110px}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,35451,(e,t,r)=>{var n={229:function(e){var t,r,n,o=e.exports={};function u(){throw Error("setTimeout has not been defined")}function i(){throw Error("clearTimeout has not been defined")}try{t="function"==typeof setTimeout?setTimeout:u}catch(e){t=u}try{r="function"==typeof clearTimeout?clearTimeout:i}catch(e){r=i}function c(e){if(t===setTimeout)return setTimeout(e,0);if((t===u||!t)&&setTimeout)return t=setTimeout,setTimeout(e,0);try{return t(e,0)}catch(r){try{return t.call(null,e,0)}catch(r){return t.call(this,e,0)}}}var a=[],s=!1,l=-1;function f(){s&&n&&(s=!1,n.length?a=n.concat(a):l=-1,a.length&&d())}function d(){if(!s){var e=c(f);s=!0;for(var t=a.length;t;){for(n=a,a=[];++l<t;)n&&n[l].run();l=-1,t=a.length}n=null,s=!1,function(e){if(r===clearTimeout)return clearTimeout(e);if((r===i||!r)&&clearTimeout)return r=clearTimeout,clearTimeout(e);try{r(e)}catch(t){try{return r.call(null,e)}catch(t){return r.call(this,e)}}}(e)}}function p(e,t){this.fun=e,this.array=t}function y(){}o.nextTick=function(e){var t=Array(arguments.length-1);if(arguments.length>1)for(var r=1;r<arguments.length;r++)t[r-1]=arguments[r];a.push(new p(e,t)),1!==a.length||s||c(d)},p.prototype.run=function(){this.fun.apply(null,this.array)},o.title="browser",o.browser=!0,o.env={},o.argv=[],o.version="",o.versions={},o.on=y,o.addListener=y,o.once=y,o.off=y,o.removeListener=y,o.removeAllListeners=y,o.emit=y,o.prependListener=y,o.prependOnceListener=y,o.listeners=function(e){return[]},o.binding=function(e){throw Error("process.binding is not supported")},o.cwd=function(){return"/"},o.chdir=function(e){throw Error("process.chdir is not supported")},o.umask=function(){return 0}}},o={};function u(e){var t=o[e];if(void 0!==t)return t.exports;var r=o[e]={exports:{}},i=!0;try{n[e](r,r.exports,u),i=!1}finally{i&&delete o[e]}return r.exports}u.ab="/ROOT/node_modules/next/dist/compiled/process/",t.exports=u(229)},47167,(e,t,r)=>{"use strict";var n,o;t.exports=(null==(n=e.g.process)?void 0:n.env)&&"object"==typeof(null==(o=e.g.process)?void 0:o.env)?e.g.process:e.r(35451)},45689,(e,t,r)=>{"use strict";var n=Symbol.for("react.transitional.element");function o(e,t,r){var o=null;if(void 0!==r&&(o=""+r),void 0!==t.key&&(o=""+t.key),"key"in t)for(var u in r={},t)"key"!==u&&(r[u]=t[u]);else r=t;return{$$typeof:n,type:e,key:o,ref:void 0!==(t=r.ref)?t:null,props:r}}r.Fragment=Symbol.for("react.fragment"),r.jsx=o,r.jsxs=o},18050,(e,t,r)=>{"use strict";t.exports=e.r(45689)},50740,(e,t,r)=>{"use strict";var n=e.i(47167),o=Symbol.for("react.transitional.element"),u=Symbol.for("react.portal"),i=Symbol.for("react.fragment"),c=Symbol.for("react.strict_mode"),a=Symbol.for("react.profiler"),s=Symbol.for("react.consumer"),l=Symbol.for("react.context"),f=Symbol.for("react.forward_ref"),d=Symbol.for("react.suspense"),p=Symbol.for("react.memo"),y=Symbol.for("react.lazy"),_=Symbol.for("react.activity"),E=Symbol.for("react.view_transition"),v=Symbol.iterator,g={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},h=Object.assign,b={};function m(e,t,r){this.props=e,this.context=t,this.refs=b,this.updater=r||g}function O(){}function R(e,t,r){this.props=e,this.context=t,this.refs=b,this.updater=r||g}m.prototype.isReactComponent={},m.prototype.setState=function(e,t){if("object"!=typeof e&&"function"!=typeof e&&null!=e)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")},m.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},O.prototype=m.prototype;var T=R.prototype=new O;T.constructor=R,h(T,m.prototype),T.isPureReactComponent=!0;var S=Array.isArray;function j(){}var P={H:null,A:null,T:null,S:null},A=Object.prototype.hasOwnProperty;function x(e,t,r){var n=r.ref;return{$$typeof:o,type:e,key:t,ref:void 0!==n?n:null,props:r}}function N(e){return"object"==typeof e&&null!==e&&e.$$typeof===o}var w=/\/+/g;function M(e,t){var r,n;return"object"==typeof e&&null!==e&&null!=e.key?(r=""+e.key,n={"=":"=0",":":"=2"},"$"+r.replace(/[=:]/g,function(e){return n[e]})):t.toString(36)}function C(e,t,r){if(null==e)return e;var n=[],i=0;return!function e(t,r,n,i,c){var a,s,l,f=typeof t;("undefined"===f||"boolean"===f)&&(t=null);var d=!1;if(null===t)d=!0;else switch(f){case"bigint":case"string":case"number":d=!0;break;case"object":switch(t.$$typeof){case o:case u:d=!0;break;case y:return e((d=t._init)(t._payload),r,n,i,c)}}if(d)return c=c(t),d=""===i?"."+M(t,0):i,S(c)?(n="",null!=d&&(n=d.replace(w,"$&/")+"/"),e(c,r,n,"",function(e){return e})):null!=c&&(N(c)&&(a=c,s=n+(null==c.key||t&&t.key===c.key?"":(""+c.key).replace(w,"$&/")+"/")+d,c=x(a.type,s,a.props)),r.push(c)),1;d=0;var p=""===i?".":i+":";if(S(t))for(var _=0;_<t.length;_++)f=p+M(i=t[_],_),d+=e(i,r,n,f,c);else if("function"==typeof(_=null===(l=t)||"object"!=typeof l?null:"function"==typeof(l=v&&l[v]||l["@@iterator"])?l:null))for(t=_.call(t),_=0;!(i=t.next()).done;)f=p+M(i=i.value,_++),d+=e(i,r,n,f,c);else if("object"===f){if("function"==typeof t.then)return e(function(e){switch(e.status){case"fulfilled":return e.value;case"rejected":throw e.reason;default:switch("string"==typeof e.status?e.then(j,j):(e.status="pending",e.then(function(t){"pending"===e.status&&(e.status="fulfilled",e.value=t)},function(t){"pending"===e.status&&(e.status="rejected",e.reason=t)})),e.status){case"fulfilled":return e.value;case"rejected":throw e.reason}}throw e}(t),r,n,i,c);throw Error("Objects are not valid as a React child (found: "+("[object Object]"===(r=String(t))?"object with keys {"+Object.keys(t).join(", ")+"}":r)+"). If you meant to render a collection of children, use an array instead.")}return d}(e,n,"","",function(e){return t.call(r,e,i++)}),n}function D(e){if(-1===e._status){var t=(0,e._result)();t.then(function(r){(0===e._status||-1===e._status)&&(e._status=1,e._result=r,void 0===t.status&&(t.status="fulfilled",t.value=r))},function(r){(0===e._status||-1===e._status)&&(e._status=2,e._result=r,void 0===t.status&&(t.status="rejected",t.reason=r))}),-1===e._status&&(e._status=0,e._result=t)}if(1===e._status)return e._result.default;throw e._result}var H="function"==typeof reportError?reportError:function(e){if("object"==typeof window&&"function"==typeof window.ErrorEvent){var t=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:"object"==typeof e&&null!==e&&"string"==typeof e.message?String(e.message):String(e),error:e});if(!window.dispatchEvent(t))return}else if("object"==typeof n.default&&"function"==typeof n.default.emit)return void n.default.emit("uncaughtException",e);console.error(e)};function U(e){var t=P.T,r={};r.types=null!==t?t.types:null,P.T=r;try{var n=e(),o=P.S;null!==o&&o(r,n),"object"==typeof n&&null!==n&&"function"==typeof n.then&&n.then(j,H)}catch(e){H(e)}finally{null!==t&&null!==r.types&&(t.types=r.types),P.T=t}}function I(e){var t=P.T;if(null!==t){var r=t.types;null===r?t.types=[e]:-1===r.indexOf(e)&&r.push(e)}else U(I.bind(null,e))}r.Activity=_,r.Children={map:C,forEach:function(e,t,r){C(e,function(){t.apply(this,arguments)},r)},count:function(e){var t=0;return C(e,function(){t++}),t},toArray:function(e){return C(e,function(e){return e})||[]},only:function(e){if(!N(e))throw Error("React.Children.only expected to receive a single React element child.");return e}},r.Component=m,r.Fragment=i,r.Profiler=a,r.PureComponent=R,r.StrictMode=c,r.Suspense=d,r.ViewTransition=E,r.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=P,r.__COMPILER_RUNTIME={__proto__:null,c:function(e){return P.H.useMemoCache(e)}},r.addTransitionType=I,r.cache=function(e){return function(){return e.apply(null,arguments)}},r.cacheSignal=function(){return null},r.cloneElement=function(e,t,r){if(null==e)throw Error("The argument must be a React element, but you passed "+e+".");var n=h({},e.props),o=e.key;if(null!=t)for(u in void 0!==t.key&&(o=""+t.key),t)A.call(t,u)&&"key"!==u&&"__self"!==u&&"__source"!==u&&("ref"!==u||void 0!==t.ref)&&(n[u]=t[u]);var u=arguments.length-2;if(1===u)n.children=r;else if(1<u){for(var i=Array(u),c=0;c<u;c++)i[c]=arguments[c+2];n.children=i}return x(e.type,o,n)},r.createContext=function(e){return(e={$$typeof:l,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null}).Provider=e,e.Consumer={$$typeof:s,_context:e},e},r.createElement=function(e,t,r){var n,o={},u=null;if(null!=t)for(n in void 0!==t.key&&(u=""+t.key),t)A.call(t,n)&&"key"!==n&&"__self"!==n&&"__source"!==n&&(o[n]=t[n]);var i=arguments.length-2;if(1===i)o.children=r;else if(1<i){for(var c=Array(i),a=0;a<i;a++)c[a]=arguments[a+2];o.children=c}if(e&&e.defaultProps)for(n in i=e.defaultProps)void 0===o[n]&&(o[n]=i[n]);return x(e,u,o)},r.createRef=function(){return{current:null}},r.forwardRef=function(e){return{$$typeof:f,render:e}},r.isValidElement=N,r.lazy=function(e){return{$$typeof:y,_payload:{_status:-1,_result:e},_init:D}},r.memo=function(e,t){return{$$typeof:p,type:e,compare:void 0===t?null:t}},r.startTransition=U,r.unstable_useCacheRefresh=function(){return P.H.useCacheRefresh()},r.use=function(e){return P.H.use(e)},r.useActionState=function(e,t,r){return P.H.useActionState(e,t,r)},r.useCallback=function(e,t){return P.H.useCallback(e,t)},r.useContext=function(e){return P.H.useContext(e)},r.useDebugValue=function(){},r.useDeferredValue=function(e,t){return P.H.useDeferredValue(e,t)},r.useEffect=function(e,t){return P.H.useEffect(e,t)},r.useEffectEvent=function(e){return P.H.useEffectEvent(e)},r.useId=function(){return P.H.useId()},r.useImperativeHandle=function(e,t,r){return P.H.useImperativeHandle(e,t,r)},r.useInsertionEffect=function(e,t){return P.H.useInsertionEffect(e,t)},r.useLayoutEffect=function(e,t){return P.H.useLayoutEffect(e,t)},r.useMemo=function(e,t){return P.H.useMemo(e,t)},r.useOptimistic=function(e,t){return P.H.useOptimistic(e,t)},r.useReducer=function(e,t,r){return P.H.useReducer(e,t,r)},r.useRef=function(e){return P.H.useRef(e)},r.useState=function(e){return P.H.useState(e)},r.useSyncExternalStore=function(e,t,r){return P.H.useSyncExternalStore(e,t,r)},r.useTransition=function(){return P.H.useTransition()},r.version="19.3.0-canary-3f0b9e61-20260317"},71645,(e,t,r)=>{"use strict";t.exports=e.r(50740)},55682,(e,t,r)=>{"use strict";r._=function(e){return e&&e.__esModule?e:{default:e}}},90317,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={bindSnapshot:function(){return s},createAsyncLocalStorage:function(){return a},createSnapshot:function(){return l}};for(var o in n)Object.defineProperty(r,o,{enumerable:!0,get:n[o]});let u=Object.defineProperty(Error("Invariant: AsyncLocalStorage accessed in runtime where it is not available"),"__NEXT_ERROR_CODE",{value:"E504",enumerable:!1,configurable:!0});class i{disable(){throw u}getStore(){}run(){throw u}exit(){throw u}enterWith(){throw u}static bind(e){return e}}let c="u">typeof globalThis&&globalThis.AsyncLocalStorage;function a(){return c?new c:new i}function s(e){return c?c.bind(e):i.bind(e)}function l(){return c?c.snapshot():function(e,...t){return e(...t)}}},12718,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"InvariantError",{enumerable:!0,get:function(){return n}});class n extends Error{constructor(e,t){super(`Invariant: ${e.endsWith(".")?e:e+"."} This is a bug in Next.js.`,t),this.name="InvariantError"}}},76963,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"RedirectStatusCode",{enumerable:!0,get:function(){return o}});var n,o=((n={})[n.SeeOther=303]="SeeOther",n[n.TemporaryRedirect=307]="TemporaryRedirect",n[n.PermanentRedirect=308]="PermanentRedirect",n);("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},68391,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={REDIRECT_ERROR_CODE:function(){return i},isRedirectError:function(){return c}};for(var o in n)Object.defineProperty(r,o,{enumerable:!0,get:n[o]});let u=e.r(76963),i="NEXT_REDIRECT";function c(e){if("object"!=typeof e||null===e||!("digest"in e)||"string"!=typeof e.digest)return!1;let t=e.digest.split(";"),[r,n]=t,o=t.slice(2,-2).join(";"),c=Number(t.at(-2));return r===i&&("replace"===n||"push"===n)&&"string"==typeof o&&!isNaN(c)&&c in u.RedirectStatusCode}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},90809,(e,t,r)=>{"use strict";function n(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(n=function(e){return e?r:t})(e)}r._=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=n(t);if(r&&r.has(e))return r.get(e);var o={__proto__:null},u=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&Object.prototype.hasOwnProperty.call(e,i)){var c=u?Object.getOwnPropertyDescriptor(e,i):null;c&&(c.get||c.set)?Object.defineProperty(o,i,c):o[i]=e[i]}return o.default=e,r&&r.set(e,o),o}},21768,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={ACTION_HEADER:function(){return i},FLIGHT_HEADERS:function(){return E},NEXT_ACTION_NOT_FOUND_HEADER:function(){return R},NEXT_ACTION_REVALIDATED_HEADER:function(){return j},NEXT_DID_POSTPONE_HEADER:function(){return h},NEXT_HMR_REFRESH_HASH_COOKIE:function(){return f},NEXT_HMR_REFRESH_HEADER:function(){return l},NEXT_HTML_REQUEST_ID_HEADER:function(){return S},NEXT_INSTANT_PREFETCH_HEADER:function(){return y},NEXT_INSTANT_TEST_COOKIE:function(){return _},NEXT_IS_PRERENDER_HEADER:function(){return O},NEXT_REQUEST_ID_HEADER:function(){return T},NEXT_REWRITTEN_PATH_HEADER:function(){return b},NEXT_REWRITTEN_QUERY_HEADER:function(){return m},NEXT_ROUTER_PREFETCH_HEADER:function(){return a},NEXT_ROUTER_SEGMENT_PREFETCH_HEADER:function(){return s},NEXT_ROUTER_STALE_TIME_HEADER:function(){return g},NEXT_ROUTER_STATE_TREE_HEADER:function(){return c},NEXT_RSC_UNION_QUERY:function(){return v},NEXT_URL:function(){return d},RSC_CONTENT_TYPE_HEADER:function(){return p},RSC_HEADER:function(){return u}};for(var o in n)Object.defineProperty(r,o,{enumerable:!0,get:n[o]});let u="rsc",i="next-action",c="next-router-state-tree",a="next-router-prefetch",s="next-router-segment-prefetch",l="next-hmr-refresh",f="__next_hmr_refresh_hash__",d="next-url",p="text/x-component",y="next-instant-navigation-testing-prefetch",_="next-instant-navigation-testing",E=[u,c,a,l,s],v="_rsc",g="x-nextjs-stale-time",h="x-nextjs-postponed",b="x-nextjs-rewritten-path",m="x-nextjs-rewritten-query",O="x-nextjs-prerender",R="x-nextjs-action-not-found",T="x-nextjs-request-id",S="x-nextjs-html-request-id",j="x-action-revalidated";("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},39470,(e,t,r)=>{"use strict";function n(){let e,t,r=new Promise((r,n)=>{e=r,t=n});return{resolve:e,reject:t,promise:r}}Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"createPromiseWithResolvers",{enumerable:!0,get:function(){return n}})},8372,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={AppRouterContext:function(){return i},GlobalLayoutRouterContext:function(){return a},LayoutRouterContext:function(){return c},MissingSlotContext:function(){return l},TemplateContext:function(){return s}};for(var o in n)Object.defineProperty(r,o,{enumerable:!0,get:n[o]});let u=e.r(55682)._(e.r(71645)),i=u.default.createContext(null),c=u.default.createContext(null),a=u.default.createContext(null),s=u.default.createContext(null),l=u.default.createContext(new Set)},13258,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={DEFAULT_SEGMENT_KEY:function(){return f},NOT_FOUND_SEGMENT_KEY:function(){return d},PAGE_SEGMENT_KEY:function(){return l},addSearchParamsIfPageSegment:function(){return a},computeSelectedLayoutSegment:function(){return s},getSegmentValue:function(){return u},getSelectedLayoutSegmentPath:function(){return function e(t,r,n=!0,o=[]){let i;if(n)i=t[1][r];else{let e=t[1];i=e.children??Object.values(e)[0]}if(!i)return o;let c=u(i[0]);return!c||c.startsWith(l)?o:(o.push(c),e(i,r,!1,o))}},isGroupSegment:function(){return i},isParallelRouteSegment:function(){return c}};for(var o in n)Object.defineProperty(r,o,{enumerable:!0,get:n[o]});function u(e){return Array.isArray(e)?e[1]:e}function i(e){return"("===e[0]&&e.endsWith(")")}function c(e){return e.startsWith("@")&&"@children"!==e}function a(e,t){if(e.includes(l)){let e=JSON.stringify(t);return"{}"!==e?l+"?"+e:l}return e}function s(e,t){if(!e||0===e.length)return null;let r="children"===t?e[0]:e[e.length-1];return r===f?null:r}let l="__PAGE__",f="__DEFAULT__",d="/_not-found"},92838,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={UnrecognizedActionError:function(){return u},unstable_isUnrecognizedActionError:function(){return i}};for(var o in n)Object.defineProperty(r,o,{enumerable:!0,get:n[o]});class u extends Error{constructor(...e){super(...e),this.name="UnrecognizedActionError"}}function i(e){return!!(e&&"object"==typeof e&&e instanceof u)}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},34457,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"actionAsyncStorageInstance",{enumerable:!0,get:function(){return n}});let n=(0,e.r(90317).createAsyncLocalStorage)()},62266,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"actionAsyncStorage",{enumerable:!0,get:function(){return n.actionAsyncStorageInstance}});let n=e.r(34457)},24063,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={getRedirectError:function(){return a},getRedirectStatusCodeFromError:function(){return p},getRedirectTypeFromError:function(){return d},getURLFromRedirectError:function(){return f},permanentRedirect:function(){return l},redirect:function(){return s}};for(var o in n)Object.defineProperty(r,o,{enumerable:!0,get:n[o]});let u=e.r(76963),i=e.r(68391),c="u"<typeof window?e.r(62266).actionAsyncStorage:void 0;function a(e,t,r=u.RedirectStatusCode.TemporaryRedirect){let n=Object.defineProperty(Error(i.REDIRECT_ERROR_CODE),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});return n.digest=`${i.REDIRECT_ERROR_CODE};${t};${e};${r};`,n}function s(e,t){throw a(e,t??=c?.getStore()?.isAction?"push":"replace",u.RedirectStatusCode.TemporaryRedirect)}function l(e,t="replace"){throw a(e,t,u.RedirectStatusCode.PermanentRedirect)}function f(e){return(0,i.isRedirectError)(e)?e.digest.split(";").slice(2,-2).join(";"):null}function d(e){if(!(0,i.isRedirectError)(e))throw Object.defineProperty(Error("Not a redirect error"),"__NEXT_ERROR_CODE",{value:"E260",enumerable:!1,configurable:!0});return e.digest.split(";",2)[1]}function p(e){if(!(0,i.isRedirectError)(e))throw Object.defineProperty(Error("Not a redirect error"),"__NEXT_ERROR_CODE",{value:"E260",enumerable:!1,configurable:!0});return Number(e.digest.split(";").at(-2))}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},43369,(e,t,r)=>{"use strict";let n;Object.defineProperty(r,"__esModule",{value:!0});var o={getAssetToken:function(){return a},getAssetTokenQuery:function(){return s},getDeploymentId:function(){return i},getDeploymentIdQuery:function(){return c}};for(var u in o)Object.defineProperty(r,u,{enumerable:!0,get:o[u]});function i(){return n}function c(e=!1){let t=n;return t?`${e?"&":"?"}dpl=${t}`:""}function a(){return!1}function s(e=!1){return""}"u">typeof window?(n=document.documentElement.dataset.dplId,delete document.documentElement.dataset.dplId):n=void 0},18800,(e,t,r)=>{"use strict";var n=e.r(71645);function o(e){var t="https://react.dev/errors/"+e;if(1<arguments.length){t+="?args[]="+encodeURIComponent(arguments[1]);for(var r=2;r<arguments.length;r++)t+="&args[]="+encodeURIComponent(arguments[r])}return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}function u(){}var i={d:{f:u,r:function(){throw Error(o(522))},D:u,C:u,L:u,m:u,X:u,S:u,M:u},p:0,findDOMNode:null},c=Symbol.for("react.portal"),a=Symbol.for("react.optimistic_key"),s=n.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;function l(e,t){return"font"===e?"":"string"==typeof t?"use-credentials"===t?t:"":void 0}r.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=i,r.createPortal=function(e,t){var r=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!t||1!==t.nodeType&&9!==t.nodeType&&11!==t.nodeType)throw Error(o(299));return function(e,t,r){var n=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:c,key:null==n?null:n===a?a:""+n,children:e,containerInfo:t,implementation:r}}(e,t,null,r)},r.flushSync=function(e){var t=s.T,r=i.p;try{if(s.T=null,i.p=2,e)return e()}finally{s.T=t,i.p=r,i.d.f()}},r.preconnect=function(e,t){"string"==typeof e&&(t=t?"string"==typeof(t=t.crossOrigin)?"use-credentials"===t?t:"":void 0:null,i.d.C(e,t))},r.prefetchDNS=function(e){"string"==typeof e&&i.d.D(e)},r.preinit=function(e,t){if("string"==typeof e&&t&&"string"==typeof t.as){var r=t.as,n=l(r,t.crossOrigin),o="string"==typeof t.integrity?t.integrity:void 0,u="string"==typeof t.fetchPriority?t.fetchPriority:void 0;"style"===r?i.d.S(e,"string"==typeof t.precedence?t.precedence:void 0,{crossOrigin:n,integrity:o,fetchPriority:u}):"script"===r&&i.d.X(e,{crossOrigin:n,integrity:o,fetchPriority:u,nonce:"string"==typeof t.nonce?t.nonce:void 0})}},r.preinitModule=function(e,t){if("string"==typeof e)if("object"==typeof t&&null!==t){if(null==t.as||"script"===t.as){var r=l(t.as,t.crossOrigin);i.d.M(e,{crossOrigin:r,integrity:"string"==typeof t.integrity?t.integrity:void 0,nonce:"string"==typeof t.nonce?t.nonce:void 0})}}else null==t&&i.d.M(e)},r.preload=function(e,t){if("string"==typeof e&&"object"==typeof t&&null!==t&&"string"==typeof t.as){var r=t.as,n=l(r,t.crossOrigin);i.d.L(e,r,{crossOrigin:n,integrity:"string"==typeof t.integrity?t.integrity:void 0,nonce:"string"==typeof t.nonce?t.nonce:void 0,type:"string"==typeof t.type?t.type:void 0,fetchPriority:"string"==typeof t.fetchPriority?t.fetchPriority:void 0,referrerPolicy:"string"==typeof t.referrerPolicy?t.referrerPolicy:void 0,imageSrcSet:"string"==typeof t.imageSrcSet?t.imageSrcSet:void 0,imageSizes:"string"==typeof t.imageSizes?t.imageSizes:void 0,media:"string"==typeof t.media?t.media:void 0})}},r.preloadModule=function(e,t){if("string"==typeof e)if(t){var r=l(t.as,t.crossOrigin);i.d.m(e,{as:"string"==typeof t.as&&"script"!==t.as?t.as:void 0,crossOrigin:r,integrity:"string"==typeof t.integrity?t.integrity:void 0})}else i.d.m(e)},r.requestFormReset=function(e){i.d.r(e)},r.unstable_batchedUpdates=function(e,t){return e(t)},r.useFormState=function(e,t,r){return s.H.useFormState(e,t,r)},r.useFormStatus=function(){return s.H.useHostTransitionStatus()},r.version="19.3.0-canary-3f0b9e61-20260317"},74080,(e,t,r)=>{"use strict";!function e(){if("u">typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(e){console.error(e)}}(),t.exports=e.r(18800)},42344,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"workAsyncStorageInstance",{enumerable:!0,get:function(){return n}});let n=(0,e.r(90317).createAsyncLocalStorage)()},63599,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"workAsyncStorage",{enumerable:!0,get:function(){return n.workAsyncStorageInstance}});let n=e.r(42344)},12354,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"handleISRError",{enumerable:!0,get:function(){return o}});let n="u"<typeof window?e.r(63599).workAsyncStorage:void 0;function o({error:e}){if(n){let t=n.getStore();if(t?.isStaticGeneration)throw e&&console.error(e),e}}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},90373,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"useUntrackedPathname",{enumerable:!0,get:function(){return u}});let n=e.r(71645),o=e.r(61994);function u(){return!function(){if("u"<typeof window){let{workUnitAsyncStorage:t}=e.r(62141),r=t.getStore();if(!r)return!1;switch(r.type){case"prerender":case"prerender-client":case"prerender-ppr":case"validation-client":let n=r.fallbackRouteParams;return!!n&&n.size>0}}return!1}()?(0,n.useContext)(o.PathnameContext):null}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},78377,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={handleHardNavError:function(){return i},useNavFailureHandler:function(){return c}};for(var o in n)Object.defineProperty(r,o,{enumerable:!0,get:n[o]});e.r(71645);let u=e.r(51191);function i(e){return!!(e&&"u">typeof window)&&!!window.next.__pendingUrl&&(0,u.createHrefFromUrl)(new URL(window.location.href))!==(0,u.createHrefFromUrl)(window.next.__pendingUrl)&&(console.error("Error occurred during navigation, falling back to hard navigation",e),window.location.href=window.next.__pendingUrl.toString(),!0)}function c(){}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},72383,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={ErrorBoundary:function(){return _},ErrorBoundaryHandler:function(){return y}};for(var o in n)Object.defineProperty(r,o,{enumerable:!0,get:n[o]});let u=e.r(90809),i=e.r(18050),c=u._(e.r(71645)),a=e.r(90373),s=e.r(65713);e.r(78377);let l=e.r(12354),f=e.r(82604),d=e.r(8372),p="u">typeof window&&(0,f.isBot)(window.navigator.userAgent);class y extends c.default.Component{static{this.contextType=d.AppRouterContext}constructor(e){super(e),this.reset=()=>{this.setState({error:null})},this.unstable_retry=()=>{(0,c.startTransition)(()=>{this.context?.refresh(),this.reset()})},this.state={error:null,previousPathname:this.props.pathname}}static getDerivedStateFromError(e){if((0,s.isNextRouterError)(e))throw e;return{error:e}}static getDerivedStateFromProps(e,t){let{error:r}=t;return e.pathname!==t.previousPathname&&t.error?{error:null,previousPathname:e.pathname}:{error:t.error,previousPathname:e.pathname}}render(){return this.state.error&&!p?((0,l.handleISRError)({error:this.state.error}),(0,i.jsxs)(i.Fragment,{children:[this.props.errorStyles,this.props.errorScripts,(0,i.jsx)(this.props.errorComponent,{error:this.state.error,reset:this.reset,unstable_retry:this.unstable_retry})]})):this.props.children}}function _({errorComponent:e,errorStyles:t,errorScripts:r,children:n}){let o=(0,a.useUntrackedPathname)();return e?(0,i.jsx)(y,{pathname:o,errorComponent:e,errorStyles:t,errorScripts:r,children:n}):(0,i.jsx)(i.Fragment,{children:n})}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},58442,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={RedirectBoundary:function(){return p},RedirectErrorBoundary:function(){return d}};for(var o in n)Object.defineProperty(r,o,{enumerable:!0,get:n[o]});let u=e.r(90809),i=e.r(18050),c=u._(e.r(71645)),a=e.r(76562),s=e.r(24063),l=e.r(68391);function f({redirect:e,reset:t,redirectType:r}){let n=(0,a.useRouter)();return(0,c.useEffect)(()=>{c.default.startTransition(()=>{"push"===r?n.push(e,{}):n.replace(e,{}),t()})},[e,r,t,n]),null}class d extends c.default.Component{constructor(e){super(e),this.state={redirect:null,redirectType:null}}static getDerivedStateFromError(e){if((0,l.isRedirectError)(e)){let t=(0,s.getURLFromRedirectError)(e),r=(0,s.getRedirectTypeFromError)(e);return"handled"in e?{redirect:null,redirectType:null}:{redirect:t,redirectType:r}}throw e}render(){let{redirect:e,redirectType:t}=this.state;return null!==e&&null!==t?(0,i.jsx)(f,{redirect:e,redirectType:t,reset:()=>this.setState({redirect:null})}):this.props.children}}function p({children:e}){let t=(0,a.useRouter)();return(0,i.jsx)(d,{router:t,children:e})}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},70725,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"createRouterCacheKey",{enumerable:!0,get:function(){return o}});let n=e.r(13258);function o(e,t=!1){return Array.isArray(e)?`${e[0]}|${e[1]}|${e[2]}`:t&&e.startsWith(n.PAGE_SEGMENT_KEY)?n.PAGE_SEGMENT_KEY:e}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},1244,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"unresolvedThenable",{enumerable:!0,get:function(){return n}});let n={then:()=>{}};("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},97367,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={MetadataBoundary:function(){return c},OutletBoundary:function(){return s},RootLayoutBoundary:function(){return l},ViewportBoundary:function(){return a}};for(var o in n)Object.defineProperty(r,o,{enumerable:!0,get:n[o]});let u=e.r(54839),i={[u.METADATA_BOUNDARY_NAME]:function({children:e}){return e},[u.VIEWPORT_BOUNDARY_NAME]:function({children:e}){return e},[u.OUTLET_BOUNDARY_NAME]:function({children:e}){return e},[u.ROOT_LAYOUT_BOUNDARY_NAME]:function({children:e}){return e}},c=i[u.METADATA_BOUNDARY_NAME.slice(0)],a=i[u.VIEWPORT_BOUNDARY_NAME.slice(0)],s=i[u.OUTLET_BOUNDARY_NAME.slice(0)],l=i[u.ROOT_LAYOUT_BOUNDARY_NAME.slice(0)]}]);
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,35451,(e,t,r)=>{var n={229:function(e){var t,r,n,o=e.exports={};function u(){throw Error("setTimeout has not been defined")}function i(){throw Error("clearTimeout has not been defined")}try{t="function"==typeof setTimeout?setTimeout:u}catch(e){t=u}try{r="function"==typeof clearTimeout?clearTimeout:i}catch(e){r=i}function c(e){if(t===setTimeout)return setTimeout(e,0);if((t===u||!t)&&setTimeout)return t=setTimeout,setTimeout(e,0);try{return t(e,0)}catch(r){try{return t.call(null,e,0)}catch(r){return t.call(this,e,0)}}}var a=[],s=!1,l=-1;function f(){s&&n&&(s=!1,n.length?a=n.concat(a):l=-1,a.length&&d())}function d(){if(!s){var e=c(f);s=!0;for(var t=a.length;t;){for(n=a,a=[];++l<t;)n&&n[l].run();l=-1,t=a.length}n=null,s=!1,function(e){if(r===clearTimeout)return clearTimeout(e);if((r===i||!r)&&clearTimeout)return r=clearTimeout,clearTimeout(e);try{r(e)}catch(t){try{return r.call(null,e)}catch(t){return r.call(this,e)}}}(e)}}function p(e,t){this.fun=e,this.array=t}function y(){}o.nextTick=function(e){var t=Array(arguments.length-1);if(arguments.length>1)for(var r=1;r<arguments.length;r++)t[r-1]=arguments[r];a.push(new p(e,t)),1!==a.length||s||c(d)},p.prototype.run=function(){this.fun.apply(null,this.array)},o.title="browser",o.browser=!0,o.env={},o.argv=[],o.version="",o.versions={},o.on=y,o.addListener=y,o.once=y,o.off=y,o.removeListener=y,o.removeAllListeners=y,o.emit=y,o.prependListener=y,o.prependOnceListener=y,o.listeners=function(e){return[]},o.binding=function(e){throw Error("process.binding is not supported")},o.cwd=function(){return"/"},o.chdir=function(e){throw Error("process.chdir is not supported")},o.umask=function(){return 0}}},o={};function u(e){var t=o[e];if(void 0!==t)return t.exports;var r=o[e]={exports:{}},i=!0;try{n[e](r,r.exports,u),i=!1}finally{i&&delete o[e]}return r.exports}u.ab="/ROOT/node_modules/next/dist/compiled/process/",t.exports=u(229)},47167,(e,t,r)=>{"use strict";var n,o;t.exports=(null==(n=e.g.process)?void 0:n.env)&&"object"==typeof(null==(o=e.g.process)?void 0:o.env)?e.g.process:e.r(35451)},45689,(e,t,r)=>{"use strict";var n=Symbol.for("react.transitional.element");function o(e,t,r){var o=null;if(void 0!==r&&(o=""+r),void 0!==t.key&&(o=""+t.key),"key"in t)for(var u in r={},t)"key"!==u&&(r[u]=t[u]);else r=t;return{$$typeof:n,type:e,key:o,ref:void 0!==(t=r.ref)?t:null,props:r}}r.Fragment=Symbol.for("react.fragment"),r.jsx=o,r.jsxs=o},18050,(e,t,r)=>{"use strict";t.exports=e.r(45689)},50740,(e,t,r)=>{"use strict";var n=e.i(47167),o=Symbol.for("react.transitional.element"),u=Symbol.for("react.portal"),i=Symbol.for("react.fragment"),c=Symbol.for("react.strict_mode"),a=Symbol.for("react.profiler"),s=Symbol.for("react.consumer"),l=Symbol.for("react.context"),f=Symbol.for("react.forward_ref"),d=Symbol.for("react.suspense"),p=Symbol.for("react.memo"),y=Symbol.for("react.lazy"),_=Symbol.for("react.activity"),E=Symbol.for("react.view_transition"),v=Symbol.iterator,g={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},h=Object.assign,b={};function m(e,t,r){this.props=e,this.context=t,this.refs=b,this.updater=r||g}function O(){}function R(e,t,r){this.props=e,this.context=t,this.refs=b,this.updater=r||g}m.prototype.isReactComponent={},m.prototype.setState=function(e,t){if("object"!=typeof e&&"function"!=typeof e&&null!=e)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")},m.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},O.prototype=m.prototype;var T=R.prototype=new O;T.constructor=R,h(T,m.prototype),T.isPureReactComponent=!0;var S=Array.isArray;function j(){}var P={H:null,A:null,T:null,S:null},A=Object.prototype.hasOwnProperty;function x(e,t,r){var n=r.ref;return{$$typeof:o,type:e,key:t,ref:void 0!==n?n:null,props:r}}function N(e){return"object"==typeof e&&null!==e&&e.$$typeof===o}var w=/\/+/g;function M(e,t){var r,n;return"object"==typeof e&&null!==e&&null!=e.key?(r=""+e.key,n={"=":"=0",":":"=2"},"$"+r.replace(/[=:]/g,function(e){return n[e]})):t.toString(36)}function C(e,t,r){if(null==e)return e;var n=[],i=0;return!function e(t,r,n,i,c){var a,s,l,f=typeof t;("undefined"===f||"boolean"===f)&&(t=null);var d=!1;if(null===t)d=!0;else switch(f){case"bigint":case"string":case"number":d=!0;break;case"object":switch(t.$$typeof){case o:case u:d=!0;break;case y:return e((d=t._init)(t._payload),r,n,i,c)}}if(d)return c=c(t),d=""===i?"."+M(t,0):i,S(c)?(n="",null!=d&&(n=d.replace(w,"$&/")+"/"),e(c,r,n,"",function(e){return e})):null!=c&&(N(c)&&(a=c,s=n+(null==c.key||t&&t.key===c.key?"":(""+c.key).replace(w,"$&/")+"/")+d,c=x(a.type,s,a.props)),r.push(c)),1;d=0;var p=""===i?".":i+":";if(S(t))for(var _=0;_<t.length;_++)f=p+M(i=t[_],_),d+=e(i,r,n,f,c);else if("function"==typeof(_=null===(l=t)||"object"!=typeof l?null:"function"==typeof(l=v&&l[v]||l["@@iterator"])?l:null))for(t=_.call(t),_=0;!(i=t.next()).done;)f=p+M(i=i.value,_++),d+=e(i,r,n,f,c);else if("object"===f){if("function"==typeof t.then)return e(function(e){switch(e.status){case"fulfilled":return e.value;case"rejected":throw e.reason;default:switch("string"==typeof e.status?e.then(j,j):(e.status="pending",e.then(function(t){"pending"===e.status&&(e.status="fulfilled",e.value=t)},function(t){"pending"===e.status&&(e.status="rejected",e.reason=t)})),e.status){case"fulfilled":return e.value;case"rejected":throw e.reason}}throw e}(t),r,n,i,c);throw Error("Objects are not valid as a React child (found: "+("[object Object]"===(r=String(t))?"object with keys {"+Object.keys(t).join(", ")+"}":r)+"). If you meant to render a collection of children, use an array instead.")}return d}(e,n,"","",function(e){return t.call(r,e,i++)}),n}function D(e){if(-1===e._status){var t=(0,e._result)();t.then(function(r){(0===e._status||-1===e._status)&&(e._status=1,e._result=r,void 0===t.status&&(t.status="fulfilled",t.value=r))},function(r){(0===e._status||-1===e._status)&&(e._status=2,e._result=r,void 0===t.status&&(t.status="rejected",t.reason=r))}),-1===e._status&&(e._status=0,e._result=t)}if(1===e._status)return e._result.default;throw e._result}var H="function"==typeof reportError?reportError:function(e){if("object"==typeof window&&"function"==typeof window.ErrorEvent){var t=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:"object"==typeof e&&null!==e&&"string"==typeof e.message?String(e.message):String(e),error:e});if(!window.dispatchEvent(t))return}else if("object"==typeof n.default&&"function"==typeof n.default.emit)return void n.default.emit("uncaughtException",e);console.error(e)};function U(e){var t=P.T,r={};r.types=null!==t?t.types:null,P.T=r;try{var n=e(),o=P.S;null!==o&&o(r,n),"object"==typeof n&&null!==n&&"function"==typeof n.then&&n.then(j,H)}catch(e){H(e)}finally{null!==t&&null!==r.types&&(t.types=r.types),P.T=t}}function I(e){var t=P.T;if(null!==t){var r=t.types;null===r?t.types=[e]:-1===r.indexOf(e)&&r.push(e)}else U(I.bind(null,e))}r.Activity=_,r.Children={map:C,forEach:function(e,t,r){C(e,function(){t.apply(this,arguments)},r)},count:function(e){var t=0;return C(e,function(){t++}),t},toArray:function(e){return C(e,function(e){return e})||[]},only:function(e){if(!N(e))throw Error("React.Children.only expected to receive a single React element child.");return e}},r.Component=m,r.Fragment=i,r.Profiler=a,r.PureComponent=R,r.StrictMode=c,r.Suspense=d,r.ViewTransition=E,r.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=P,r.__COMPILER_RUNTIME={__proto__:null,c:function(e){return P.H.useMemoCache(e)}},r.addTransitionType=I,r.cache=function(e){return function(){return e.apply(null,arguments)}},r.cacheSignal=function(){return null},r.cloneElement=function(e,t,r){if(null==e)throw Error("The argument must be a React element, but you passed "+e+".");var n=h({},e.props),o=e.key;if(null!=t)for(u in void 0!==t.key&&(o=""+t.key),t)A.call(t,u)&&"key"!==u&&"__self"!==u&&"__source"!==u&&("ref"!==u||void 0!==t.ref)&&(n[u]=t[u]);var u=arguments.length-2;if(1===u)n.children=r;else if(1<u){for(var i=Array(u),c=0;c<u;c++)i[c]=arguments[c+2];n.children=i}return x(e.type,o,n)},r.createContext=function(e){return(e={$$typeof:l,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null}).Provider=e,e.Consumer={$$typeof:s,_context:e},e},r.createElement=function(e,t,r){var n,o={},u=null;if(null!=t)for(n in void 0!==t.key&&(u=""+t.key),t)A.call(t,n)&&"key"!==n&&"__self"!==n&&"__source"!==n&&(o[n]=t[n]);var i=arguments.length-2;if(1===i)o.children=r;else if(1<i){for(var c=Array(i),a=0;a<i;a++)c[a]=arguments[a+2];o.children=c}if(e&&e.defaultProps)for(n in i=e.defaultProps)void 0===o[n]&&(o[n]=i[n]);return x(e,u,o)},r.createRef=function(){return{current:null}},r.forwardRef=function(e){return{$$typeof:f,render:e}},r.isValidElement=N,r.lazy=function(e){return{$$typeof:y,_payload:{_status:-1,_result:e},_init:D}},r.memo=function(e,t){return{$$typeof:p,type:e,compare:void 0===t?null:t}},r.startTransition=U,r.unstable_useCacheRefresh=function(){return P.H.useCacheRefresh()},r.use=function(e){return P.H.use(e)},r.useActionState=function(e,t,r){return P.H.useActionState(e,t,r)},r.useCallback=function(e,t){return P.H.useCallback(e,t)},r.useContext=function(e){return P.H.useContext(e)},r.useDebugValue=function(){},r.useDeferredValue=function(e,t){return P.H.useDeferredValue(e,t)},r.useEffect=function(e,t){return P.H.useEffect(e,t)},r.useEffectEvent=function(e){return P.H.useEffectEvent(e)},r.useId=function(){return P.H.useId()},r.useImperativeHandle=function(e,t,r){return P.H.useImperativeHandle(e,t,r)},r.useInsertionEffect=function(e,t){return P.H.useInsertionEffect(e,t)},r.useLayoutEffect=function(e,t){return P.H.useLayoutEffect(e,t)},r.useMemo=function(e,t){return P.H.useMemo(e,t)},r.useOptimistic=function(e,t){return P.H.useOptimistic(e,t)},r.useReducer=function(e,t,r){return P.H.useReducer(e,t,r)},r.useRef=function(e){return P.H.useRef(e)},r.useState=function(e){return P.H.useState(e)},r.useSyncExternalStore=function(e,t,r){return P.H.useSyncExternalStore(e,t,r)},r.useTransition=function(){return P.H.useTransition()},r.version="19.3.0-canary-3f0b9e61-20260317"},71645,(e,t,r)=>{"use strict";t.exports=e.r(50740)},55682,(e,t,r)=>{"use strict";r._=function(e){return e&&e.__esModule?e:{default:e}}},90317,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={bindSnapshot:function(){return s},createAsyncLocalStorage:function(){return a},createSnapshot:function(){return l}};for(var o in n)Object.defineProperty(r,o,{enumerable:!0,get:n[o]});let u=Object.defineProperty(Error("Invariant: AsyncLocalStorage accessed in runtime where it is not available"),"__NEXT_ERROR_CODE",{value:"E504",enumerable:!1,configurable:!0});class i{disable(){throw u}getStore(){}run(){throw u}exit(){throw u}enterWith(){throw u}static bind(e){return e}}let c="u">typeof globalThis&&globalThis.AsyncLocalStorage;function a(){return c?new c:new i}function s(e){return c?c.bind(e):i.bind(e)}function l(){return c?c.snapshot():function(e,...t){return e(...t)}}},12718,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"InvariantError",{enumerable:!0,get:function(){return n}});class n extends Error{constructor(e,t){super(`Invariant: ${e.endsWith(".")?e:e+"."} This is a bug in Next.js.`,t),this.name="InvariantError"}}},76963,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"RedirectStatusCode",{enumerable:!0,get:function(){return o}});var n,o=((n={})[n.SeeOther=303]="SeeOther",n[n.TemporaryRedirect=307]="TemporaryRedirect",n[n.PermanentRedirect=308]="PermanentRedirect",n);("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},68391,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={REDIRECT_ERROR_CODE:function(){return i},isRedirectError:function(){return c}};for(var o in n)Object.defineProperty(r,o,{enumerable:!0,get:n[o]});let u=e.r(76963),i="NEXT_REDIRECT";function c(e){if("object"!=typeof e||null===e||!("digest"in e)||"string"!=typeof e.digest)return!1;let t=e.digest.split(";"),[r,n]=t,o=t.slice(2,-2).join(";"),c=Number(t.at(-2));return r===i&&("replace"===n||"push"===n)&&"string"==typeof o&&!isNaN(c)&&c in u.RedirectStatusCode}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},90809,(e,t,r)=>{"use strict";function n(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(n=function(e){return e?r:t})(e)}r._=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=n(t);if(r&&r.has(e))return r.get(e);var o={__proto__:null},u=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&Object.prototype.hasOwnProperty.call(e,i)){var c=u?Object.getOwnPropertyDescriptor(e,i):null;c&&(c.get||c.set)?Object.defineProperty(o,i,c):o[i]=e[i]}return o.default=e,r&&r.set(e,o),o}},21768,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={ACTION_HEADER:function(){return i},FLIGHT_HEADERS:function(){return E},NEXT_ACTION_NOT_FOUND_HEADER:function(){return R},NEXT_ACTION_REVALIDATED_HEADER:function(){return j},NEXT_DID_POSTPONE_HEADER:function(){return h},NEXT_HMR_REFRESH_HASH_COOKIE:function(){return f},NEXT_HMR_REFRESH_HEADER:function(){return l},NEXT_HTML_REQUEST_ID_HEADER:function(){return S},NEXT_INSTANT_PREFETCH_HEADER:function(){return y},NEXT_INSTANT_TEST_COOKIE:function(){return _},NEXT_IS_PRERENDER_HEADER:function(){return O},NEXT_REQUEST_ID_HEADER:function(){return T},NEXT_REWRITTEN_PATH_HEADER:function(){return b},NEXT_REWRITTEN_QUERY_HEADER:function(){return m},NEXT_ROUTER_PREFETCH_HEADER:function(){return a},NEXT_ROUTER_SEGMENT_PREFETCH_HEADER:function(){return s},NEXT_ROUTER_STALE_TIME_HEADER:function(){return g},NEXT_ROUTER_STATE_TREE_HEADER:function(){return c},NEXT_RSC_UNION_QUERY:function(){return v},NEXT_URL:function(){return d},RSC_CONTENT_TYPE_HEADER:function(){return p},RSC_HEADER:function(){return u}};for(var o in n)Object.defineProperty(r,o,{enumerable:!0,get:n[o]});let u="rsc",i="next-action",c="next-router-state-tree",a="next-router-prefetch",s="next-router-segment-prefetch",l="next-hmr-refresh",f="__next_hmr_refresh_hash__",d="next-url",p="text/x-component",y="next-instant-navigation-testing-prefetch",_="next-instant-navigation-testing",E=[u,c,a,l,s],v="_rsc",g="x-nextjs-stale-time",h="x-nextjs-postponed",b="x-nextjs-rewritten-path",m="x-nextjs-rewritten-query",O="x-nextjs-prerender",R="x-nextjs-action-not-found",T="x-nextjs-request-id",S="x-nextjs-html-request-id",j="x-action-revalidated";("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},39470,(e,t,r)=>{"use strict";function n(){let e,t,r=new Promise((r,n)=>{e=r,t=n});return{resolve:e,reject:t,promise:r}}Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"createPromiseWithResolvers",{enumerable:!0,get:function(){return n}})},8372,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={AppRouterContext:function(){return i},GlobalLayoutRouterContext:function(){return a},LayoutRouterContext:function(){return c},MissingSlotContext:function(){return l},TemplateContext:function(){return s}};for(var o in n)Object.defineProperty(r,o,{enumerable:!0,get:n[o]});let u=e.r(55682)._(e.r(71645)),i=u.default.createContext(null),c=u.default.createContext(null),a=u.default.createContext(null),s=u.default.createContext(null),l=u.default.createContext(new Set)},13258,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={DEFAULT_SEGMENT_KEY:function(){return f},NOT_FOUND_SEGMENT_KEY:function(){return d},PAGE_SEGMENT_KEY:function(){return l},addSearchParamsIfPageSegment:function(){return a},computeSelectedLayoutSegment:function(){return s},getSegmentValue:function(){return u},getSelectedLayoutSegmentPath:function(){return function e(t,r,n=!0,o=[]){let i;if(n)i=t[1][r];else{let e=t[1];i=e.children??Object.values(e)[0]}if(!i)return o;let c=u(i[0]);return!c||c.startsWith(l)?o:(o.push(c),e(i,r,!1,o))}},isGroupSegment:function(){return i},isParallelRouteSegment:function(){return c}};for(var o in n)Object.defineProperty(r,o,{enumerable:!0,get:n[o]});function u(e){return Array.isArray(e)?e[1]:e}function i(e){return"("===e[0]&&e.endsWith(")")}function c(e){return e.startsWith("@")&&"@children"!==e}function a(e,t){if(e.includes(l)){let e=JSON.stringify(t);return"{}"!==e?l+"?"+e:l}return e}function s(e,t){if(!e||0===e.length)return null;let r="children"===t?e[0]:e[e.length-1];return r===f?null:r}let l="__PAGE__",f="__DEFAULT__",d="/_not-found"},92838,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={UnrecognizedActionError:function(){return u},unstable_isUnrecognizedActionError:function(){return i}};for(var o in n)Object.defineProperty(r,o,{enumerable:!0,get:n[o]});class u extends Error{constructor(...e){super(...e),this.name="UnrecognizedActionError"}}function i(e){return!!(e&&"object"==typeof e&&e instanceof u)}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},34457,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"actionAsyncStorageInstance",{enumerable:!0,get:function(){return n}});let n=(0,e.r(90317).createAsyncLocalStorage)()},62266,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"actionAsyncStorage",{enumerable:!0,get:function(){return n.actionAsyncStorageInstance}});let n=e.r(34457)},24063,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={getRedirectError:function(){return a},getRedirectStatusCodeFromError:function(){return p},getRedirectTypeFromError:function(){return d},getURLFromRedirectError:function(){return f},permanentRedirect:function(){return l},redirect:function(){return s}};for(var o in n)Object.defineProperty(r,o,{enumerable:!0,get:n[o]});let u=e.r(76963),i=e.r(68391),c="u"<typeof window?e.r(62266).actionAsyncStorage:void 0;function a(e,t,r=u.RedirectStatusCode.TemporaryRedirect){let n=Object.defineProperty(Error(i.REDIRECT_ERROR_CODE),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});return n.digest=`${i.REDIRECT_ERROR_CODE};${t};${e};${r};`,n}function s(e,t){throw a(e,t??=c?.getStore()?.isAction?"push":"replace",u.RedirectStatusCode.TemporaryRedirect)}function l(e,t="replace"){throw a(e,t,u.RedirectStatusCode.PermanentRedirect)}function f(e){return(0,i.isRedirectError)(e)?e.digest.split(";").slice(2,-2).join(";"):null}function d(e){if(!(0,i.isRedirectError)(e))throw Object.defineProperty(Error("Not a redirect error"),"__NEXT_ERROR_CODE",{value:"E260",enumerable:!1,configurable:!0});return e.digest.split(";",2)[1]}function p(e){if(!(0,i.isRedirectError)(e))throw Object.defineProperty(Error("Not a redirect error"),"__NEXT_ERROR_CODE",{value:"E260",enumerable:!1,configurable:!0});return Number(e.digest.split(";").at(-2))}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},18800,(e,t,r)=>{"use strict";var n=e.r(71645);function o(e){var t="https://react.dev/errors/"+e;if(1<arguments.length){t+="?args[]="+encodeURIComponent(arguments[1]);for(var r=2;r<arguments.length;r++)t+="&args[]="+encodeURIComponent(arguments[r])}return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}function u(){}var i={d:{f:u,r:function(){throw Error(o(522))},D:u,C:u,L:u,m:u,X:u,S:u,M:u},p:0,findDOMNode:null},c=Symbol.for("react.portal"),a=Symbol.for("react.optimistic_key"),s=n.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;function l(e,t){return"font"===e?"":"string"==typeof t?"use-credentials"===t?t:"":void 0}r.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=i,r.createPortal=function(e,t){var r=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!t||1!==t.nodeType&&9!==t.nodeType&&11!==t.nodeType)throw Error(o(299));return function(e,t,r){var n=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:c,key:null==n?null:n===a?a:""+n,children:e,containerInfo:t,implementation:r}}(e,t,null,r)},r.flushSync=function(e){var t=s.T,r=i.p;try{if(s.T=null,i.p=2,e)return e()}finally{s.T=t,i.p=r,i.d.f()}},r.preconnect=function(e,t){"string"==typeof e&&(t=t?"string"==typeof(t=t.crossOrigin)?"use-credentials"===t?t:"":void 0:null,i.d.C(e,t))},r.prefetchDNS=function(e){"string"==typeof e&&i.d.D(e)},r.preinit=function(e,t){if("string"==typeof e&&t&&"string"==typeof t.as){var r=t.as,n=l(r,t.crossOrigin),o="string"==typeof t.integrity?t.integrity:void 0,u="string"==typeof t.fetchPriority?t.fetchPriority:void 0;"style"===r?i.d.S(e,"string"==typeof t.precedence?t.precedence:void 0,{crossOrigin:n,integrity:o,fetchPriority:u}):"script"===r&&i.d.X(e,{crossOrigin:n,integrity:o,fetchPriority:u,nonce:"string"==typeof t.nonce?t.nonce:void 0})}},r.preinitModule=function(e,t){if("string"==typeof e)if("object"==typeof t&&null!==t){if(null==t.as||"script"===t.as){var r=l(t.as,t.crossOrigin);i.d.M(e,{crossOrigin:r,integrity:"string"==typeof t.integrity?t.integrity:void 0,nonce:"string"==typeof t.nonce?t.nonce:void 0})}}else null==t&&i.d.M(e)},r.preload=function(e,t){if("string"==typeof e&&"object"==typeof t&&null!==t&&"string"==typeof t.as){var r=t.as,n=l(r,t.crossOrigin);i.d.L(e,r,{crossOrigin:n,integrity:"string"==typeof t.integrity?t.integrity:void 0,nonce:"string"==typeof t.nonce?t.nonce:void 0,type:"string"==typeof t.type?t.type:void 0,fetchPriority:"string"==typeof t.fetchPriority?t.fetchPriority:void 0,referrerPolicy:"string"==typeof t.referrerPolicy?t.referrerPolicy:void 0,imageSrcSet:"string"==typeof t.imageSrcSet?t.imageSrcSet:void 0,imageSizes:"string"==typeof t.imageSizes?t.imageSizes:void 0,media:"string"==typeof t.media?t.media:void 0})}},r.preloadModule=function(e,t){if("string"==typeof e)if(t){var r=l(t.as,t.crossOrigin);i.d.m(e,{as:"string"==typeof t.as&&"script"!==t.as?t.as:void 0,crossOrigin:r,integrity:"string"==typeof t.integrity?t.integrity:void 0})}else i.d.m(e)},r.requestFormReset=function(e){i.d.r(e)},r.unstable_batchedUpdates=function(e,t){return e(t)},r.useFormState=function(e,t,r){return s.H.useFormState(e,t,r)},r.useFormStatus=function(){return s.H.useHostTransitionStatus()},r.version="19.3.0-canary-3f0b9e61-20260317"},74080,(e,t,r)=>{"use strict";!function e(){if("u">typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(e){console.error(e)}}(),t.exports=e.r(18800)},43369,(e,t,r)=>{"use strict";let n;Object.defineProperty(r,"__esModule",{value:!0});var o={getAssetToken:function(){return a},getAssetTokenQuery:function(){return s},getDeploymentId:function(){return i},getDeploymentIdQuery:function(){return c}};for(var u in o)Object.defineProperty(r,u,{enumerable:!0,get:o[u]});function i(){return n}function c(e=!1){let t=n;return t?`${e?"&":"?"}dpl=${t}`:""}function a(){return!1}function s(e=!1){return""}"u">typeof window?(n=document.documentElement.dataset.dplId,delete document.documentElement.dataset.dplId):n=void 0},42344,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"workAsyncStorageInstance",{enumerable:!0,get:function(){return n}});let n=(0,e.r(90317).createAsyncLocalStorage)()},63599,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"workAsyncStorage",{enumerable:!0,get:function(){return n.workAsyncStorageInstance}});let n=e.r(42344)},12354,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"handleISRError",{enumerable:!0,get:function(){return o}});let n="u"<typeof window?e.r(63599).workAsyncStorage:void 0;function o({error:e}){if(n){let t=n.getStore();if(t?.isStaticGeneration)throw e&&console.error(e),e}}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},90373,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"useUntrackedPathname",{enumerable:!0,get:function(){return u}});let n=e.r(71645),o=e.r(61994);function u(){return!function(){if("u"<typeof window){let{workUnitAsyncStorage:t}=e.r(62141),r=t.getStore();if(!r)return!1;switch(r.type){case"prerender":case"prerender-client":case"prerender-ppr":case"validation-client":let n=r.fallbackRouteParams;return!!n&&n.size>0}}return!1}()?(0,n.useContext)(o.PathnameContext):null}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},78377,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={handleHardNavError:function(){return i},useNavFailureHandler:function(){return c}};for(var o in n)Object.defineProperty(r,o,{enumerable:!0,get:n[o]});e.r(71645);let u=e.r(51191);function i(e){return!!(e&&"u">typeof window)&&!!window.next.__pendingUrl&&(0,u.createHrefFromUrl)(new URL(window.location.href))!==(0,u.createHrefFromUrl)(window.next.__pendingUrl)&&(console.error("Error occurred during navigation, falling back to hard navigation",e),window.location.href=window.next.__pendingUrl.toString(),!0)}function c(){}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},72383,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={ErrorBoundary:function(){return _},ErrorBoundaryHandler:function(){return y}};for(var o in n)Object.defineProperty(r,o,{enumerable:!0,get:n[o]});let u=e.r(90809),i=e.r(18050),c=u._(e.r(71645)),a=e.r(90373),s=e.r(65713);e.r(78377);let l=e.r(12354),f=e.r(82604),d=e.r(8372),p="u">typeof window&&(0,f.isBot)(window.navigator.userAgent);class y extends c.default.Component{static{this.contextType=d.AppRouterContext}constructor(e){super(e),this.reset=()=>{this.setState({error:null})},this.unstable_retry=()=>{(0,c.startTransition)(()=>{this.context?.refresh(),this.reset()})},this.state={error:null,previousPathname:this.props.pathname}}static getDerivedStateFromError(e){if((0,s.isNextRouterError)(e))throw e;return{error:e}}static getDerivedStateFromProps(e,t){let{error:r}=t;return e.pathname!==t.previousPathname&&t.error?{error:null,previousPathname:e.pathname}:{error:t.error,previousPathname:e.pathname}}render(){return this.state.error&&!p?((0,l.handleISRError)({error:this.state.error}),(0,i.jsxs)(i.Fragment,{children:[this.props.errorStyles,this.props.errorScripts,(0,i.jsx)(this.props.errorComponent,{error:this.state.error,reset:this.reset,unstable_retry:this.unstable_retry})]})):this.props.children}}function _({errorComponent:e,errorStyles:t,errorScripts:r,children:n}){let o=(0,a.useUntrackedPathname)();return e?(0,i.jsx)(y,{pathname:o,errorComponent:e,errorStyles:t,errorScripts:r,children:n}):(0,i.jsx)(i.Fragment,{children:n})}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},58442,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={RedirectBoundary:function(){return p},RedirectErrorBoundary:function(){return d}};for(var o in n)Object.defineProperty(r,o,{enumerable:!0,get:n[o]});let u=e.r(90809),i=e.r(18050),c=u._(e.r(71645)),a=e.r(76562),s=e.r(24063),l=e.r(68391);function f({redirect:e,reset:t,redirectType:r}){let n=(0,a.useRouter)();return(0,c.useEffect)(()=>{c.default.startTransition(()=>{"push"===r?n.push(e,{}):n.replace(e,{}),t()})},[e,r,t,n]),null}class d extends c.default.Component{constructor(e){super(e),this.state={redirect:null,redirectType:null}}static getDerivedStateFromError(e){if((0,l.isRedirectError)(e)){let t=(0,s.getURLFromRedirectError)(e),r=(0,s.getRedirectTypeFromError)(e);return"handled"in e?{redirect:null,redirectType:null}:{redirect:t,redirectType:r}}throw e}render(){let{redirect:e,redirectType:t}=this.state;return null!==e&&null!==t?(0,i.jsx)(f,{redirect:e,redirectType:t,reset:()=>this.setState({redirect:null})}):this.props.children}}function p({children:e}){let t=(0,a.useRouter)();return(0,i.jsx)(d,{router:t,children:e})}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},70725,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"createRouterCacheKey",{enumerable:!0,get:function(){return o}});let n=e.r(13258);function o(e,t=!1){return Array.isArray(e)?`${e[0]}|${e[1]}|${e[2]}`:t&&e.startsWith(n.PAGE_SEGMENT_KEY)?n.PAGE_SEGMENT_KEY:e}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},1244,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"unresolvedThenable",{enumerable:!0,get:function(){return n}});let n={then:()=>{}};("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},97367,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={MetadataBoundary:function(){return c},OutletBoundary:function(){return s},RootLayoutBoundary:function(){return l},ViewportBoundary:function(){return a}};for(var o in n)Object.defineProperty(r,o,{enumerable:!0,get:n[o]});let u=e.r(54839),i={[u.METADATA_BOUNDARY_NAME]:function({children:e}){return e},[u.VIEWPORT_BOUNDARY_NAME]:function({children:e}){return e},[u.OUTLET_BOUNDARY_NAME]:function({children:e}){return e},[u.ROOT_LAYOUT_BOUNDARY_NAME]:function({children:e}){return e}},c=i[u.METADATA_BOUNDARY_NAME.slice(0)],a=i[u.VIEWPORT_BOUNDARY_NAME.slice(0)],s=i[u.OUTLET_BOUNDARY_NAME.slice(0)],l=i[u.ROOT_LAYOUT_BOUNDARY_NAME.slice(0)]}]);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
:root{--bg-primary:#f5f5f7;--bg-secondary:#fff;--bg-tertiary:#e8e8ed;--text-primary:#1d1d1f;--text-secondary:#6e6e73;--text-muted:#86868b;--border-color:#0000000f;--accent:#5e6ad2;--accent-hover:#6e7ae0;--accent-soft:#5e6ad21f;--danger:#ff3b30;--success:#34c759;--warning:#ff9500;--info:#5ac8fa;--glass-bg:#ffffff73;--glass-bg-heavy:#ffffffe6;--glass-bg-subtle:#ffffff40;--glass-bg-solid:#fffc;--glass-border:#6161611a;--glass-border-strong:#616161b3;--glass-highlight:#fff9;--glass-shadow:0 8px 32px #00000014;--glass-shadow-lg:0 16px 48px #0000001f;--glass-shadow-inset:inset 0 1px 0 #fff9;--blur-sm:blur(8px);--blur-md:blur(16px);--blur-lg:blur(24px);--blur-xl:blur(32px);--blur-2xl:blur(40px);--font-sans:-apple-system, BlinkMacSystemFont, "SF Pro Display", "SF Pro Text", "PingFang SC", "Microsoft YaHei", sans-serif;--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;--radius-sm:10px;--radius-md:14px;--radius-lg:20px;--radius-xl:24px;--radius-full:9999px;--shadow-sm:0 1px 3px #0000000a;--shadow:0 2px 8px #0000000f;--shadow-md:0 4px 16px #00000014;--shadow-lg:0 8px 32px #0000001a;--shadow-xl:0 16px 48px #0000001f;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-8:32px;--space-10:40px;--space-12:48px;--space-16:64px;--space-20:80px;--transition:.25s cubic-bezier(.4, 0, .2, 1);--transition-fast:.15s cubic-bezier(.4, 0, .2, 1);--transition-spring:.35s cubic-bezier(.34, 1.56, .64, 1)}[data-theme=dark]{--bg-primary:#000;--bg-secondary:#0a0a0a;--bg-tertiary:#141416;--text-primary:#f5f5f7;--text-secondary:#a1a1a6;--text-muted:#6e6e73;--border-color:#ffffff14;--accent:#5e6ad2;--accent-hover:#6e7ae0;--accent-soft:#5e6ad226;--danger:#ff453a;--success:#30d158;--warning:#ff9f0a;--info:#64d2ff;--glass-bg:#1c1c1e73;--glass-bg-heavy:#1c1c1ef0;--glass-bg-subtle:#1c1c1e40;--glass-bg-solid:#1c1c1ecc;--glass-border:#ffffff1a;--glass-border-strong:#ffffff26;--glass-highlight:#ffffff14;--glass-shadow:0 8px 32px #0000004d;--glass-shadow-lg:0 16px 48px #0006;--glass-shadow-inset:inset 0 1px 0 #ffffff0f}*{box-sizing:border-box;margin:0;padding:0}.btn{justify-content:center;align-items:center;gap:var(--space-2);font-size:14px;font-weight:500;font-family:var(--font-sans);color:var(--text-primary);background:var(--glass-bg-subtle);border:1px solid var(--glass-border);border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast);white-space:nowrap;-webkit-tap-highlight-color:transparent;padding:10px 16px;text-decoration:none;display:inline-flex}.btn:hover:not(:disabled){transform:translateY(-1px)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-loading{opacity:.7}.btn-sm{border-radius:var(--radius-sm);min-height:32px;padding:6px 12px;font-size:13px}.btn-primary{color:#fff;background:var(--accent)}.btn-primary:hover:not(:disabled){background:var(--accent-hover);box-shadow:0 4px 16px #5e6ad24d}.sidebar-open-hint{margin-top:var(--space-2)}.error-boundary-page{min-height:100dvh;padding:var(--space-8);background:var(--bg-primary);font-family:var(--font-sans);flex-direction:column;justify-content:center;align-items:center;display:flex}.error-boundary-title{margin-bottom:var(--space-2);color:var(--text-primary);font-size:20px;font-weight:600}.error-boundary-desc{color:var(--text-secondary);margin-bottom:var(--space-6);text-align:center;max-width:400px}.error-boundary-btn{border-radius:var(--radius-sm);background:var(--accent);color:#fff;cursor:pointer;border:none;padding:10px 24px;font-size:14px}.error-boundary-btn:hover{background:var(--accent-hover)}.btn-secondary{color:var(--text-primary);background:var(--glass-bg-subtle);-webkit-backdrop-filter:var(--blur-sm);border:1px solid var(--glass-border)}.btn-secondary:hover:not(:disabled){border-color:var(--accent);color:var(--accent);background:var(--accent-soft);transform:translateY(-1px)}.btn-danger{color:#fff;background:var(--danger)}.btn-danger:hover:not(:disabled){box-shadow:0 4px 16px #ff3b304d}.btn-ghost{color:var(--text-secondary);border:1px solid var(--glass-border);background:0 0}.btn-ghost:hover:not(:disabled){background:var(--glass-bg-subtle);color:var(--text-primary);border-color:var(--glass-border-strong)}.btn-info{color:#fff;background:var(--info)}.btn-info:hover:not(:disabled){box-shadow:0 4px 16px #5ac8fa4d}.btn-warning{color:#fff;background:var(--warning)}.btn-warning:hover:not(:disabled){box-shadow:0 4px 16px #ff95004d}.btn-icon{border-radius:var(--radius-md);background:var(--glass-bg-subtle);border:1px solid var(--glass-border);width:32px;height:32px;color:var(--text-secondary);padding:0}.btn-icon:hover:not(:disabled){background:var(--glass-bg);color:var(--text-primary);border-color:var(--glass-border-strong)}.btn-circle{border-radius:50%;width:44px;height:44px;padding:0}.btn-full{width:100%}html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}body{font-family:var(--font-sans);background:var(--bg-primary);color:var(--text-primary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;min-height:100dvh;overflow-x:hidden}body:before{content:"";z-index:-1;pointer-events:none;background:radial-gradient(80% 60% at 20% 10%,#5e6ad214 0%,#0000 60%),radial-gradient(60% 80% at 80% 90%,#5ac8fa0f 0%,#0000 60%),radial-gradient(50% 50%,#34c7590a 0%,#0000 60%);position:fixed;inset:0}[data-theme=dark] body:before{background:radial-gradient(80% 60% at 20% 10%,#5e6ad21f 0%,#0000 60%),radial-gradient(60% 80% at 80% 90%,#5ac8fa14 0%,#0000 60%),radial-gradient(50% 50%,#34c7590d 0%,#0000 60%)}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--text-muted);border-radius:var(--radius-full);opacity:.5}::-webkit-scrollbar-thumb:hover{background:var(--text-secondary)}a{color:var(--accent);transition:color var(--transition-fast);text-decoration:none}button{font-family:var(--font-sans);cursor:pointer;color:inherit;-webkit-tap-highlight-color:transparent}::selection{background:var(--accent);color:#fff}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:var(--radius-sm)}@keyframes fadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}@keyframes scaleIn{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes slideInRight{0%{opacity:0;transform:translate(20px)}to{opacity:1;transform:translate(0)}}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@keyframes spin{to{transform:rotate(360deg)}}.input{width:100%;font-size:14px;font-family:var(--font-sans);color:var(--text-primary);background:var(--glass-bg-subtle);border:1px solid var(--glass-border);border-radius:var(--radius-md);transition:all var(--transition-fast);-webkit-tap-highlight-color:transparent;outline:none;padding:10px 14px}.input::placeholder{color:var(--text-muted)}.input:focus{border-color:var(--accent);background:var(--glass-bg);box-shadow:0 0 0 3px var(--accent-soft)}.input-pill{border-radius:var(--radius-full);padding:12px 18px}.input-compact{padding:10px 12px;font-size:13px}.input-flex{flex:1}.backend-error-page{min-height:60dvh;padding:var(--space-8);justify-content:center;align-items:center;display:flex}.backend-error-card{background:var(--glass-bg);-webkit-backdrop-filter:var(--blur-lg);backdrop-filter:var(--blur-lg);border:1px solid var(--glass-border);border-radius:var(--radius-xl);padding:var(--space-12);text-align:center;width:100%;max-width:480px;box-shadow:var(--glass-shadow-lg);animation:.3s ease-out scaleIn}.backend-error-icon{margin-bottom:var(--space-4);font-size:48px}.backend-error-card h2{margin-bottom:var(--space-3);font-size:24px;font-weight:600}.backend-error-url{margin-bottom:var(--space-2)}.backend-error-url code{background:var(--glass-bg-solid);border-radius:var(--radius-sm);font-family:var(--font-mono);word-break:break-all;padding:4px 10px;font-size:14px}.backend-error-desc{color:var(--text-secondary);margin-bottom:var(--space-6);font-size:14px}.backend-error-form{gap:var(--space-3);margin-bottom:var(--space-4);display:flex}.not-found-page{min-height:100dvh;padding:var(--space-8);justify-content:center;align-items:center;display:flex}.not-found-card{background:var(--glass-bg);-webkit-backdrop-filter:var(--blur-lg);border:1px solid var(--glass-border);border-radius:var(--radius-xl);padding:var(--space-12) var(--space-10);text-align:center;width:100%;max-width:420px;box-shadow:var(--glass-shadow-lg);animation:.35s cubic-bezier(.34,1.56,.64,1) both scaleIn}.not-found-icon{border-radius:var(--radius-full);background:var(--accent-soft);width:88px;height:88px;color:var(--accent);margin-bottom:var(--space-6);justify-content:center;align-items:center;display:inline-flex}.not-found-title{margin-bottom:var(--space-3);color:var(--text-primary);font-size:22px;font-weight:600}.not-found-desc{color:var(--text-secondary);margin-bottom:var(--space-8);font-size:15px;line-height:1.6}.not-found-actions{justify-content:center;align-items:center;gap:var(--space-3);display:flex}@media (max-width:480px){.not-found-card{padding:var(--space-8) var(--space-5)}.not-found-actions{flex-direction:column;width:100%}.not-found-actions .btn{width:100%}}
|
|
2
|
-
.app-layout{height:100dvh;color:var(--text-primary);background:0 0;display:flex;overflow:hidden}.backend-warning-bar{background:var(--warning);color:#fff;border-radius:var(--radius-sm);box-sizing:border-box;justify-content:space-between;align-items:center;gap:12px;width:100%;padding:8px 16px;font-size:13px;font-weight:500;display:flex}.backend-warning-bar button{color:#fff;cursor:pointer;background:0 0;border:none;flex-shrink:0;padding:0 4px;font-size:18px;line-height:1}.sidebar{background:var(--glass-bg-heavy);width:200px;-webkit-backdrop-filter:var(--blur-xl);border-right:1px solid var(--glass-border);box-shadow:var(--glass-shadow-inset);transition:width var(--transition), transform var(--transition);flex-direction:column;flex-shrink:0;display:flex;overflow-y:auto}.sidebar.collapsed{border:none;width:0;overflow:hidden}.sidebar .sidebar-header{border-bottom:1px solid var(--glass-border);align-items:center;gap:8px;min-height:64px;padding:14px 16px;display:flex}.sidebar .sidebar-header.sidebar-header-link{cursor:pointer}.sidebar .sidebar-header h1{background:linear-gradient(135deg, var(--accent), var(--info));-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;font-size:18px;font-weight:700}.sidebar .sidebar-nav{flex:1;padding:12px 8px}.sidebar .sidebar-empty-state{text-align:center;color:var(--text-muted);padding:40px 20px}.sidebar .sidebar-nav-btn{border-radius:var(--radius-md);cursor:pointer;width:100%;color:var(--text-secondary);transition:all var(--transition-fast);background:0 0;border:none;align-items:center;gap:10px;margin-bottom:4px;padding:10px 12px;font-size:13px;font-weight:500;display:flex}.sidebar .sidebar-nav-btn.active{background:var(--accent-soft);color:var(--accent);box-shadow:var(--glass-shadow-inset);font-weight:600}.sidebar .sidebar-nav-btn:hover:not(.active){background:var(--glass-bg-subtle);color:var(--text-primary)}.sidebar .chat-sidebar-footer{border-top:1px solid var(--glass-border);justify-content:space-between;align-items:center;gap:8px;padding:12px 16px;display:flex}.sidebar .user-info{flex:1;align-items:center;gap:8px;min-width:0;display:flex}.sidebar .user-avatar{border-radius:var(--radius-sm);background:var(--glass-bg-subtle);width:24px;height:24px;color:var(--text-secondary);flex-shrink:0;justify-content:center;align-items:center;display:flex}.sidebar .user-name{color:var(--text-primary);text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.sidebar .login-btn{border-radius:var(--radius-sm);background:var(--accent);color:#fff;cursor:pointer;transition:all var(--transition-fast);border:none;flex-shrink:0;padding:4px 10px;font-size:11px;font-weight:500}.sidebar .login-btn:hover{opacity:.85;transform:scale(1.02)}.sidebar .logout-btn{border-radius:var(--radius-sm);border:1px solid var(--glass-border);color:var(--text-secondary);cursor:pointer;transition:all var(--transition-fast);background:0 0;flex-shrink:0;padding:4px 10px;font-size:11px;font-weight:500}.sidebar .logout-btn:hover{background:var(--glass-bg-subtle);color:var(--text-primary)}.sidebar .sidebar-tools{border-top:1px solid var(--glass-border);padding:12px 8px}.sidebar .sidebar-tools-label{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px;align-items:center;gap:6px;margin-bottom:6px;padding-left:12px;font-size:11px;font-weight:500;display:flex}.sidebar-overlay{display:none}.sidebar-toggle-btn{display:flex}.mobile-menu-btn{display:none}.main-content{flex-direction:column;flex:1;min-width:0;display:flex;overflow:hidden}.app-header{border-bottom:1px solid var(--glass-border);background:var(--glass-bg);min-height:64px;-webkit-backdrop-filter:var(--blur-lg);box-sizing:border-box;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;padding:14px 24px;display:flex}.app-header .header-left{align-items:center;gap:12px;display:flex}.app-header .header-title{font-size:16px;font-weight:600}.app-header .header-badge{border-radius:var(--radius-full);background:var(--glass-bg-subtle);border:1px solid var(--glass-border);color:var(--text-secondary);align-items:center;gap:4px;padding:3px 8px;font-size:11px;display:flex}.app-header .header-badge-dot{background:var(--warning);border-radius:50%;width:6px;height:6px}.app-header .header-badge-dot.connected{background:var(--success)}.app-header .header-right{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.search-box{border-radius:var(--radius-md);background:var(--glass-bg-subtle);border:1px solid var(--glass-border);align-items:center;gap:8px;padding:6px 12px;display:flex}.search-box input{color:var(--text-primary);background:0 0;border:none;outline:none;width:100%;padding-left:2px;font-size:12px}.search-box button{cursor:pointer;color:var(--text-secondary);background:0 0;border:none;padding:0;display:flex}.action-grid{grid-template-columns:1fr 1fr;gap:12px;padding:16px 24px;display:grid;position:relative}.action-card{border:1.5px dashed var(--glass-border-strong);border-radius:var(--radius-lg);text-align:center;cursor:pointer;background:var(--glass-bg-subtle);-webkit-backdrop-filter:var(--blur-sm);transition:all var(--transition);padding:20px;position:relative}.action-card:hover{background:var(--glass-bg);border-color:var(--accent);box-shadow:var(--glass-shadow)}.action-card p{color:var(--accent);font-size:12px;font-weight:500}.action-card.upload.drag-over{border-color:var(--accent);background:var(--accent-soft)}.action-card-download p{color:var(--info)}.action-card-input{opacity:0;cursor:pointer;z-index:1;width:100%;height:100%;position:absolute;inset:0}.breadcrumb{align-items:center;gap:4px;padding:0 24px;font-size:12px;display:flex}.breadcrumb button{color:var(--text-muted);cursor:pointer;border-radius:var(--radius-sm);transition:all var(--transition-fast);background:0 0;border:none;padding:2px 4px}.breadcrumb button:hover{color:var(--text-primary);background:var(--glass-bg-subtle)}.breadcrumb button.current{color:var(--text-secondary);font-weight:500}.breadcrumb .breadcrumb-edit-btn{cursor:pointer;color:var(--text-secondary);background:0 0;border:none;align-items:center;padding:2px;display:flex}.content-grid{flex:1;padding:12px 24px;overflow:auto}.file-grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:16px;display:grid}.empty-state{text-align:center;color:var(--text-muted);padding:48px;font-size:13px}.empty-state.glass{justify-content:center;align-items:center;gap:var(--space-4);padding:var(--space-12) var(--space-6);background:var(--glass-bg-subtle);border:1px dashed var(--glass-border);border-radius:var(--radius-lg);-webkit-backdrop-filter:var(--blur-sm);backdrop-filter:var(--blur-sm);flex-direction:column;display:flex}.empty-state.glass p{max-width:320px;font-size:14px;line-height:1.6}.app-empty-state{flex-direction:column;align-items:center;gap:12px;display:flex}.empty-state-icon{border-radius:var(--radius-full);background:var(--glass-bg);width:64px;height:64px;color:var(--text-muted);justify-content:center;align-items:center;display:flex}.card{border-radius:var(--radius-lg);cursor:pointer;background:var(--glass-bg-subtle);-webkit-backdrop-filter:var(--blur-md);border:1px solid var(--glass-border);transition:all var(--transition);box-shadow:var(--glass-shadow-inset);flex-direction:column;align-items:center;padding:16px;display:flex}.card:hover{border-color:var(--glass-border-strong);background:var(--glass-bg);box-shadow:var(--glass-shadow);transform:translateY(-2px)}.card.selected{background:var(--accent-soft);border-color:var(--accent);box-shadow:0 0 0 1px var(--accent), var(--glass-shadow)}.card-icon{border-radius:var(--radius-md);width:56px;height:56px;box-shadow:var(--shadow-sm);justify-content:center;align-items:center;margin-bottom:10px;display:flex}.card-icon.folder{background:linear-gradient(135deg,#818cf8,#6366f1)}.card-icon.file{background:linear-gradient(135deg,#a78bfa,#8b5cf6)}.card-icon.starred{background:linear-gradient(135deg,#fbbf24,#f59e0b)}.card-icon.trash{background:linear-gradient(135deg,#94a3b8,#64748b)}.card-name{text-align:center;text-overflow:ellipsis;white-space:nowrap;max-width:100%;color:var(--text-primary);font-size:12px;font-weight:500;overflow:hidden}.card-date{color:var(--text-muted);margin-top:2px;font-size:10px}.modal-overlay{top:var(--modal-visual-top,0px);height:var(--modal-visual-height,100dvh);z-index:200;justify-content:center;align-items:center;animation:.2s fadeIn;display:flex;position:fixed;left:0;right:0}.modal-overlay-backdrop{z-index:0;-webkit-backdrop-filter:var(--blur-xl);pointer-events:none;background:#0000004d;position:absolute;inset:0}.modal-glass{z-index:1;border-radius:var(--radius-lg);background:var(--glass-bg-heavy);width:380px;max-width:calc(100vw - 32px);-webkit-backdrop-filter:var(--blur-2xl);border:1px solid var(--glass-border);box-shadow:var(--glass-shadow-lg), var(--glass-shadow-inset);padding:24px;animation:.25s scaleIn;position:relative}.modal-header{justify-content:space-between;align-items:center;margin-bottom:16px;display:flex}.modal-header h3{font-size:16px;font-weight:600}.modal-header button{cursor:pointer;color:var(--text-muted);background:0 0;border:none}.welcome-modal{text-align:center}.welcome-modal h2{margin-bottom:12px;font-size:18px;font-weight:600}.welcome-modal p{color:var(--text-secondary);margin-bottom:20px;font-size:13px;line-height:1.6}.welcome-steps{justify-content:center;gap:6px;margin-bottom:20px;display:flex}.welcome-step-dot{background:var(--glass-bg-subtle);border:1px solid var(--glass-border);border-radius:50%;width:6px;height:6px}.welcome-step-dot.active{background:var(--accent);border-color:var(--accent)}.welcome-actions{justify-content:center;gap:10px;display:flex}.welcome-success-icon{background:#34c75926;border:1px solid #34c7594d;border-radius:50%;justify-content:center;align-items:center;width:48px;height:48px;margin:0 auto 16px;display:flex}.spinner{border:2px solid;border-top-color:#0000;border-radius:50%;width:16px;height:16px;animation:.6s linear infinite spin;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.settings-modal .settings-title{color:var(--text-primary);font-size:18px;font-weight:600}.settings-modal .settings-label{color:var(--text-primary);margin-bottom:8px;font-size:13px;font-weight:500;display:block}.settings-modal .settings-row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.settings-modal .settings-hint{color:var(--text-muted);margin-top:8px;font-size:11px}.settings-modal .settings-divider{border-top:1px solid var(--glass-border);padding-top:16px}.settings-modal .settings-about{text-align:center;margin-bottom:16px}.settings-modal .settings-about h3{color:var(--text-primary);margin-bottom:4px;font-size:16px;font-weight:600}.settings-modal .settings-about p{color:var(--text-muted);font-size:12px}.network-addresses{flex-direction:column;gap:8px;margin-top:8px;display:flex}.address-item{background:var(--glass-bg-subtle);border-radius:var(--radius-md);border:1px solid var(--glass-border);align-items:center;gap:8px;padding:8px 12px;font-size:13px;display:flex}.address-type{border-radius:var(--radius-sm);white-space:nowrap;padding:2px 8px;font-size:11px;font-weight:600;display:inline-block}.address-type-local{color:var(--text-secondary);background:#64748b26}.address-type-lan{background:var(--accent-soft);color:var(--accent)}.address-type-tailscale{color:var(--success);background:#34c7591f}.address-type-zerotier{color:var(--info);background:#5ac8fa1f}.address-url{color:var(--text-primary);text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:12px;overflow:hidden}.page-header{align-items:center;gap:var(--space-3);margin-bottom:var(--space-6);display:flex}.page-title{font-size:20px;font-weight:600}.qr-wrap{padding:var(--space-4);border-radius:var(--radius-lg);width:fit-content;margin:0 auto var(--space-3);background:#fff;justify-content:center;display:flex}.page-footer{align-items:center;gap:var(--space-3);margin-top:var(--space-4);flex-direction:column;display:flex}.input-panel{background:var(--glass-bg);-webkit-backdrop-filter:var(--blur-md);backdrop-filter:var(--blur-md);border:1px solid var(--glass-border);border-radius:var(--radius-lg);padding:var(--space-5);margin-bottom:var(--space-6);box-shadow:var(--glass-shadow)}.textarea{border:1px solid var(--glass-border);border-radius:var(--radius-md);background:var(--glass-bg-subtle);width:100%;-webkit-backdrop-filter:var(--blur-sm);backdrop-filter:var(--blur-sm);color:var(--text-primary);font-size:14px;font-family:var(--font-sans);transition:border-color var(--transition-fast);resize:none;outline:none;padding:12px 14px}.textarea:focus{border-color:var(--accent)}.textarea::placeholder{color:var(--text-muted)}.input-wrap{position:relative}.input-wrap .input{padding-right:40px}.input-eye{color:var(--text-muted);cursor:pointer;background:0 0;border:none;padding:4px;position:absolute;top:50%;right:10px;transform:translateY(-50%)}.input-eye:hover{color:var(--text-primary)}.loading-spinner{border:2px solid var(--glass-border);border-top-color:var(--accent);border-radius:var(--radius-full);width:32px;height:32px;margin:auto;animation:.8s linear infinite spin}.mono{font-family:var(--font-mono);word-break:break-all;color:var(--text-primary);flex:1;font-size:12px}.mono-row{align-items:center;gap:var(--space-2);background:var(--glass-bg-subtle);border-radius:var(--radius-md);padding:10px 12px;display:flex}.mono-row.danger{background:#ff3b3014}.mono-row.danger .mono{color:var(--danger)}.link{color:var(--accent);align-items:center;gap:4px;font-size:13px;display:inline-flex}.inline-link{color:var(--accent);margin-top:var(--space-1);align-items:center;gap:4px;font-size:13px;display:inline-flex}.tool-link{align-items:center;gap:var(--space-2);background:var(--glass-bg);-webkit-backdrop-filter:var(--blur-md);backdrop-filter:var(--blur-md);border:1px solid var(--glass-border);border-radius:var(--radius-md);color:var(--accent);transition:all var(--transition-fast);padding:10px 20px;font-size:14px;font-weight:500;display:inline-flex}.tool-link:hover{background:var(--accent-soft)}.hint-text{color:var(--text-muted);font-size:12px}.textarea.mono{font-family:var(--font-mono);resize:none;font-size:12px}.danger{color:var(--danger)}.input-modal h3{color:var(--text-primary);margin-bottom:16px;font-size:16px;font-weight:600}.input-modal-error{color:var(--danger);margin-top:8px;font-size:12px;line-height:1.5}.modal-actions{gap:8px;margin-top:16px;display:flex}.modal-actions .btn{border-radius:var(--radius-md);flex:1;padding-inline:12px;font-size:13px}.download-modal{flex-direction:column;gap:14px;display:flex}.download-modal .modal-header{margin-bottom:2px}.download-link-row{grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px;display:grid}.download-check-btn{justify-content:center;gap:6px;min-width:88px;padding:10px 14px}.download-check-status{border-radius:var(--radius-md);border:1px solid var(--glass-border);background:var(--glass-bg-subtle);min-height:38px;color:var(--text-secondary);align-items:flex-start;gap:8px;padding:10px 12px;font-size:12px;line-height:1.45;display:flex}.download-check-status svg{flex:none;margin-top:1px}.download-check-status.success{color:var(--success);background:#34c7591a;border-color:#34c75959}.download-check-status.error{color:var(--danger);background:#ff3b301a;border-color:#ff3b3059}.download-modal>.btn-full{justify-content:center;gap:6px;margin-top:2px}.confirm-modal h3{color:var(--text-primary);margin-bottom:12px;font-size:16px;font-weight:600}.confirm-modal p{color:var(--text-secondary);margin-bottom:20px;font-size:13px}.move-modal .move-breadcrumb{flex-wrap:wrap;gap:6px;margin-bottom:12px;display:flex}.move-modal .move-breadcrumb-btn{border-radius:var(--radius-sm);background:var(--glass-bg-subtle);color:var(--text-secondary);cursor:pointer;transition:all var(--transition-fast);border:none;padding:4px 8px;font-size:12px}.move-modal .move-breadcrumb-btn:hover{background:var(--glass-bg)}.move-modal .move-breadcrumb-btn.active{background:var(--accent-soft);color:var(--accent)}.move-modal .move-folder-list{max-height:200px;margin-bottom:16px;overflow:auto}.move-modal .move-folder-item{border-radius:var(--radius-sm);cursor:pointer;width:100%;color:var(--text-primary);text-align:left;transition:all var(--transition-fast);background:0 0;border:none;align-items:center;gap:8px;padding:8px 10px;font-size:13px;display:flex}.move-modal .move-folder-item:hover{background:var(--glass-bg-subtle)}.move-modal .move-folder-item.selected{background:var(--accent-soft);color:var(--accent)}.move-modal .move-new-folder{gap:8px;margin-bottom:16px;display:flex}.move-modal .move-new-folder input{border-radius:var(--radius-sm);border:1px solid var(--glass-border);background:var(--glass-bg-subtle);color:var(--text-primary);transition:all var(--transition-fast);outline:none;flex:1;padding:8px 10px;font-size:12px}.move-modal .move-new-folder input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.share-modal .share-link-box{align-items:center;gap:10px;margin-bottom:16px;display:flex}.share-modal .share-link-text{border-radius:var(--radius-md);background:var(--glass-bg-subtle);border:1px solid var(--glass-border);font-size:13px;font-family:var(--font-mono);color:var(--text-primary);word-break:break-all;flex:1;padding:12px 14px}.share-modal .share-storage-note{border-radius:var(--radius-md);background:var(--glass-bg-subtle);border:1px solid var(--glass-border);color:var(--text-secondary);justify-content:space-between;align-items:center;gap:12px;padding:10px 12px;font-size:12px;line-height:1.5;display:flex}.share-modal .share-storage-note span{min-width:0}.share-modal .share-storage-note button{flex:none}.share-modal .share-copy-btn{border-radius:var(--radius-md);background:var(--accent);color:#fff;cursor:pointer;width:44px;transition:all var(--transition-fast);border:none}.share-modal .share-copy-btn:hover{background:var(--accent-hover);transform:scale(1.05)}.share-modal .share-copy-btn.copied{background:var(--success)}.preview-overlay{z-index:200;-webkit-backdrop-filter:var(--blur-lg);background:#000000d9;justify-content:center;align-items:center;padding:24px;animation:.2s fadeIn;display:flex;position:fixed;inset:0}.preview-overlay .preview-close{border-radius:var(--radius-md);border:1px solid var(--glass-border);background:var(--glass-bg-subtle);width:36px;height:36px;-webkit-backdrop-filter:var(--blur-sm);cursor:pointer;color:#fff;transition:all var(--transition-fast);justify-content:center;align-items:center;display:flex;position:absolute;top:20px;right:20px}.preview-overlay .preview-close:hover{background:var(--glass-bg);transform:scale(1.05)}.preview-overlay img,.preview-overlay video{border-radius:var(--radius-lg);max-width:100%;max-height:80dvh;box-shadow:var(--glass-shadow-lg)}.preview-overlay .preview-audio{background:var(--glass-bg-heavy);-webkit-backdrop-filter:var(--blur-2xl);border:1px solid var(--glass-border);border-radius:var(--radius-lg);min-width:320px;box-shadow:var(--glass-shadow-lg), var(--glass-shadow-inset);flex-direction:column;align-items:center;gap:20px;padding:40px 48px;display:flex}.preview-overlay .preview-audio-icon{background:var(--accent-soft);border-radius:50%;justify-content:center;align-items:center;width:72px;height:72px;display:flex}.preview-overlay .preview-audio-filename{color:var(--text-secondary);text-align:center;text-overflow:ellipsis;white-space:nowrap;max-width:100%;margin:0;font-size:14px;overflow:hidden}.preview-overlay .preview-audio-player{width:100%;max-width:400px;height:40px}.batch-bar{border-radius:var(--radius-lg);background:var(--glass-bg-heavy);-webkit-backdrop-filter:var(--blur-2xl);border:1px solid var(--glass-border);box-shadow:var(--glass-shadow-lg), var(--glass-shadow-inset);z-index:100;align-items:center;gap:8px;padding:10px 16px;display:flex;position:fixed;bottom:24px;left:50%;transform:translate(-50%)}.batch-bar .batch-info{white-space:nowrap;color:var(--text-secondary);font-size:12px}.batch-bar .batch-dismiss{cursor:pointer;color:var(--text-muted);background:0 0;border:none;padding:4px;display:flex}.batch-bar .batch-divider{background:var(--glass-border);width:1px;height:20px}.transfer-modal{max-height:70dvh;overflow:auto}.transfer-modal .transfer-item{border-bottom:1px solid var(--glass-border);padding:10px 0}.transfer-modal .transfer-item-header{align-items:center;gap:8px;margin-bottom:4px;display:flex}.transfer-modal .transfer-item-name{text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:12px;font-weight:500;overflow:hidden}.transfer-modal .transfer-item-cancel{cursor:pointer;color:var(--danger);background:0 0;border:none;padding:2px}.transfer-modal .transfer-progress-row{align-items:center;gap:8px;display:flex}.transfer-modal .transfer-progress-meter{border-radius:var(--radius-full);background:var(--glass-bg-subtle);appearance:none;border:0;flex:1;height:4px;overflow:hidden}.transfer-modal .transfer-progress-meter::-webkit-progress-bar{background:var(--glass-bg-subtle)}.transfer-modal .transfer-progress-meter::-webkit-progress-value{border-radius:var(--radius-full);background:var(--accent);transition:width .2s}.transfer-modal .transfer-progress-meter::-moz-progress-bar{border-radius:var(--radius-full);background:var(--accent)}.transfer-modal .transfer-progress-meter.download::-webkit-progress-value{background:var(--info)}.transfer-modal .transfer-progress-meter.download::-moz-progress-bar{background:var(--info)}.transfer-modal .transfer-progress-meter.error::-webkit-progress-value{background:var(--danger)}.transfer-modal .transfer-progress-meter.error::-moz-progress-bar{background:var(--danger)}.transfer-modal .transfer-progress-meter.cancelled::-webkit-progress-value{background:var(--warning)}.transfer-modal .transfer-progress-meter.cancelled::-moz-progress-bar{background:var(--warning)}.transfer-modal .transfer-progress-text{color:var(--text-muted);text-align:right;min-width:32px;font-size:10px}@keyframes toastSlideIn{0%{opacity:0;transform:translate(-50%)translateY(16px)}to{opacity:1;transform:translate(-50%)translateY(0)}}.toast{z-index:9999;border-radius:var(--radius-lg);box-shadow:var(--glass-shadow-lg);-webkit-backdrop-filter:var(--blur-lg);border:1px solid var(--glass-border);padding:12px 20px;font-size:13px;font-weight:500;animation:.25s toastSlideIn;position:fixed;bottom:80px;left:50%;transform:translate(-50%)}.toast.success{color:#fff;background:#34c75999}.toast.error{color:#fff;background:#ff3b3099}.toast.warning{color:#fff;background:#ff950099}.toast.info{color:#fff;background:#5ac8fa99}.toast-stack-0{bottom:80px}.toast-stack-1{bottom:140px}.toast-stack-2{bottom:200px}.toast-stack-3{bottom:260px}.toast-stack-4{bottom:320px}.toast-stack-5{bottom:380px}.welcome-path-section{text-align:left;margin-bottom:20px}.welcome-path-section .path-label{color:var(--text-muted);margin-bottom:4px;font-size:12px}.welcome-path-section .path-value{color:var(--text-primary);font-size:12px;font-family:var(--font-mono);background:var(--glass-bg-subtle);border-radius:var(--radius-sm);word-break:break-all;border:1px solid var(--glass-border);margin-bottom:12px;padding:8px 10px}.welcome-path-section .path-hint{color:var(--text-muted);margin-top:4px;font-size:11px}.login-modal{width:100%}.login-modal-header{justify-content:space-between;align-items:center;margin-bottom:20px;display:flex}.login-modal-header h3{color:var(--text-primary);font-size:16px;font-weight:600}.login-modal-close{cursor:pointer;color:var(--text-muted);border-radius:var(--radius-sm);transition:all var(--transition-fast);background:0 0;border:none;justify-content:center;align-items:center;padding:4px;display:flex}.login-modal-close:hover{color:var(--text-primary);background:var(--glass-bg-subtle)}.login-avatar-preview{border-radius:var(--radius-md);width:64px;height:64px;margin:0 auto 8px;display:block}.user-avatar-img{border-radius:var(--radius-sm);flex-shrink:0;width:24px;height:24px}.msg-avatar{border-radius:var(--radius-sm);flex-shrink:0;width:28px;height:28px;margin-right:10px}.login-modal-body{flex-direction:column;gap:12px;display:flex}.login-tip{color:var(--text-secondary);text-align:center;margin-bottom:4px;font-size:13px}.login-error{border-radius:var(--radius-sm);color:var(--danger);background:#ff3b301a;padding:8px 10px;font-size:12px;line-height:1.4}.login-password-wrapper{align-items:center;display:flex;position:relative}.login-password-wrapper .input{padding-right:40px}.login-password-toggle{cursor:pointer;color:var(--text-muted);border-radius:var(--radius-sm);transition:all var(--transition-fast);background:0 0;border:none;justify-content:center;align-items:center;padding:4px;display:flex;position:absolute;right:10px}.login-password-toggle:hover{color:var(--text-primary);background:var(--glass-bg-subtle)}.login-buttons-row{gap:8px;display:flex}.login-buttons-row .btn-primary,.login-buttons-row .btn-secondary{flex:1;padding-inline:12px;font-size:13px}.connect-modal{width:100%}.connect-modal-header{justify-content:space-between;align-items:center;margin-bottom:20px;display:flex}.connect-modal-header h3{color:var(--text-primary);font-size:16px;font-weight:600}.connect-modal-close{cursor:pointer;color:var(--text-muted);border-radius:var(--radius-sm);transition:all var(--transition-fast);background:0 0;border:none;justify-content:center;align-items:center;padding:4px;display:flex}.connect-modal-close:hover{color:var(--text-primary);background:var(--glass-bg-subtle)}.connect-modal-body{flex-direction:column;gap:12px;display:flex}.preview-text-container{background:var(--glass-bg-heavy);width:90vw;max-width:900px;max-height:80dvh;-webkit-backdrop-filter:var(--blur-2xl);border:1px solid var(--glass-border);border-radius:var(--radius-lg);box-shadow:var(--glass-shadow-lg), var(--glass-shadow-inset);flex-direction:column;padding:20px;display:flex;overflow:auto}.preview-text-header{border-bottom:1px solid var(--glass-border);color:var(--text-secondary);justify-content:space-between;align-items:center;margin-bottom:16px;padding-bottom:12px;font-size:13px;display:flex}.preview-text{color:var(--text-primary);font-family:var(--font-mono);white-space:pre-wrap;word-break:break-all;max-height:100%;margin:0;font-size:13px;line-height:1.6;overflow:auto}.preview-text-loading{color:var(--text-secondary);flex-direction:column;justify-content:center;align-items:center;gap:12px;padding:40px 20px;display:flex}.preview-text-spinner{opacity:.6;animation:.8s linear infinite spin}.preview-text-loading-hint{opacity:.6;text-align:center;max-width:300px;font-size:12px}.preview-media-wrapper{justify-content:center;align-items:center;min-width:100px;min-height:100px;display:flex;position:relative}.preview-media-wrapper .preview-loading{z-index:1;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.preview-loading-spinner{border:3px solid #fff3;border-top-color:#fff;border-radius:50%;width:32px;height:32px;animation:.8s linear infinite spin}.preview-media-wrapper img,.preview-media-wrapper video{border-radius:var(--radius-lg);max-width:100%;max-height:80dvh}.preview-unsupported{background:var(--glass-bg-heavy);border-radius:var(--radius-lg);text-align:center;color:var(--text-primary);border:1px solid var(--glass-border);padding:40px}.preview-unsupported p:first-of-type{word-break:break-all;font-size:14px;font-weight:500}.btn-nowrap{white-space:nowrap}.btn-shutdown{margin-top:20px}.settings-section{margin-bottom:20px}.settings-divider-top{margin-top:20px}.settings-subtitle{text-align:center;color:var(--text-secondary);font-size:12px}.icon-inline{vertical-align:middle;margin-right:6px}.move-modal-desc{color:var(--text-secondary);margin-bottom:12px;font-size:12px}.move-modal-hint{color:var(--text-muted);margin-bottom:12px;font-size:11px}.breadcrumb-separator{color:var(--text-secondary)}.preview-file-icon{opacity:.5;margin-bottom:12px}.empty-transfer{text-align:center;color:var(--text-muted);padding:24px;font-size:13px}.btn-empty-trash{color:var(--danger);background:#ff3b301a}.btn-empty-trash:hover:not(:disabled){background:#ff3b3026}.btn-star{background:var(--warning);color:#fff}.btn-star:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 4px 16px #ff95004d}.btn-move{background:var(--accent);color:#fff}.btn-move:hover:not(:disabled){background:var(--accent-hover);transform:translateY(-1px);box-shadow:0 4px 16px #5e6ad24d}.move-modal-empty{color:var(--text-secondary);text-align:center;padding:16px;font-size:12px}.preview-unsupported-hint{opacity:.7;margin-top:8px;font-size:12px}.action-grid-icon{margin-bottom:8px}@media (max-width:768px){.input,.textarea,.search-box input{font-size:16px}.sidebar{z-index:300;transition:transform var(--transition);width:240px;position:fixed;top:0;bottom:0;left:0;transform:translate(-100%)}.sidebar.open{transform:translate(0)}.sidebar-overlay{z-index:299;opacity:0;visibility:hidden;transition:all var(--transition);background:#0006;display:block;position:fixed;inset:0}.sidebar-overlay.visible{opacity:1;visibility:visible}.modal-overlay{z-index:301;align-items:flex-end;padding:0}.modal-overlay-backdrop{-webkit-backdrop-filter:var(--blur-lg)}.modal-glass{border-radius:var(--radius-lg) var(--radius-lg) 0 0;width:100%;max-width:100%;max-height:calc(var(--modal-visual-height,100dvh) - 12px);overscroll-behavior:contain;overflow:auto}.sidebar-toggle-btn{display:flex}.app-header{gap:8px;min-height:56px;padding:12px 16px}.app-header .header-right{gap:4px}.action-grid{grid-template-columns:1fr;gap:8px;padding:12px 16px}.action-card{padding:14px}.breadcrumb{padding:0 16px}.content-grid{padding:12px 16px}.file-grid{grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:10px}.card{padding:12px}.card-icon{border-radius:var(--radius-sm);width:44px;height:44px;margin-bottom:8px}.card-name{font-size:11px}.welcome-modal,.settings-modal,.input-modal,.confirm-modal,.move-modal,.share-modal,.download-modal,.transfer-modal{border-radius:var(--radius-lg) var(--radius-lg) 0 0;width:100%;max-width:100%}.download-link-row{grid-template-columns:1fr}.download-check-btn{width:100%}.toast{width:min(100vw - 24px,420px);left:50%}.batch-bar{flex-wrap:wrap;justify-content:center;align-items:center;gap:10px;padding:14px 40px 12px 16px;left:12px;right:12px;transform:none}.batch-bar .batch-info{text-align:center;width:100%;color:var(--text-primary);margin-bottom:2px;font-size:13px;font-weight:500}.batch-bar .batch-dismiss{background:var(--glass-bg-subtle);transition:background var(--transition);border-radius:50%;padding:6px;position:absolute;top:8px;right:8px}.batch-bar .batch-dismiss:hover{background:var(--glass-bg)}.batch-bar .batch-divider{display:none}.batch-bar .btn-sm{border-radius:var(--radius-md);min-width:64px;padding-inline:14px;font-size:13px}.preview-overlay{padding:12px}}@media (max-width:480px){.file-grid{grid-template-columns:repeat(auto-fill,minmax(90px,1fr));gap:8px}.card{padding:10px}.card-icon{width:40px;height:40px;margin-bottom:6px}.card-name{font-size:10px}.app-header{min-height:52px;padding:12px}.app-header .header-title{font-size:14px}.app-header .header-badge{padding:2px 6px;font-size:10px}.action-grid,.content-grid{padding:10px 12px}.breadcrumb{padding:0 12px;font-size:11px}.batch-bar{gap:8px;padding:12px 12px 10px}.batch-bar .batch-info{font-size:12px}.batch-bar .btn-sm{min-width:56px;padding-inline:12px;font-size:12px}}.app-home{text-align:center;flex-direction:column;justify-content:center;align-items:center;min-height:calc(100dvh - 144px);padding:0 24px;animation:.4s fadeInUp;display:flex}.app-home-card{border-radius:var(--radius-xl);background:var(--glass-bg-heavy);-webkit-backdrop-filter:var(--blur-2xl);border:1px solid var(--glass-border);box-shadow:var(--glass-shadow-lg), var(--glass-shadow-inset);flex-direction:column;align-items:center;width:100%;max-width:420px;padding:40px;display:flex}.app-home-card h1{letter-spacing:-.03px;background:linear-gradient(135deg, var(--accent), var(--info));-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;margin-top:16px;margin-bottom:8px;font-size:40px;font-weight:700}.app-home-badge{border-radius:var(--radius-full);background:var(--glass-bg-subtle);color:var(--text-secondary);border:1px solid var(--glass-border);align-items:center;gap:6px;margin-bottom:24px;padding:4px 12px;font-size:12px;font-weight:500;display:inline-flex}.app-home-badge .badge-dot{background:var(--success);border-radius:50%;flex-shrink:0;width:6px;height:6px;display:inline-block}.app-home-card p{color:var(--text-secondary);max-width:40ch;margin-bottom:32px;font-size:16px;line-height:1.6}.app-home-btn{padding:14px 32px;font-size:16px;font-weight:600}.app-home-btn-secondary{margin-top:12px;padding:10px 24px;font-size:14px}.drawer-backdrop{-webkit-backdrop-filter:var(--blur-md);z-index:1000;background:#0006;animation:.2s fadeIn;position:fixed;inset:0}.settings-drawer{background:var(--glass-bg-heavy);width:420px;max-width:100vw;-webkit-backdrop-filter:var(--blur-2xl);border-left:1px solid var(--glass-border);z-index:1001;flex-direction:column;animation:.25s slideInRight;display:flex;position:fixed;top:0;bottom:0;right:0;box-shadow:-8px 0 32px #00000026}.drawer-header{border-bottom:1px solid var(--glass-border);justify-content:space-between;align-items:center;padding:20px 24px;display:flex}.drawer-title{color:var(--text-primary);margin:0;font-size:18px;font-weight:600}.drawer-close-btn{color:var(--text-muted);cursor:pointer;border-radius:var(--radius-sm);transition:all var(--transition-fast);background:0 0;border:none;align-items:center;padding:6px;display:flex}.drawer-close-btn:hover{color:var(--text-primary);background:var(--glass-bg-subtle)}.drawer-content{flex:1;padding:20px 24px;overflow-y:auto}.drawer-section{margin-bottom:4px}.drawer-label{color:var(--text-primary);margin-bottom:8px;font-size:13px;font-weight:500;display:block}.drawer-row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.drawer-hint{color:var(--text-muted);margin-top:8px;font-size:11px}.drawer-hint-spaced{margin-bottom:12px}.remote-node-form{flex-direction:column;gap:8px;display:flex}.drawer-status{color:var(--text-secondary);margin-top:8px;font-size:11px}.drawer-status.status-success{color:var(--success)}.drawer-status.status-error{color:var(--error)}.drawer-divider{border-top:1px solid var(--glass-border);margin:16px 0}.drawer-about h3{color:var(--text-primary);margin:0 0 4px;font-size:16px;font-weight:600}.drawer-about p{color:var(--text-secondary);margin:0;font-size:12px}.drawer-subtitle{color:var(--text-muted);margin-top:4px;font-size:11px}.download-platforms-mini{flex-direction:column;gap:8px;display:flex}.download-platform-mini{background:var(--glass-bg-subtle);border:1px solid var(--glass-border);border-radius:var(--radius-md);color:var(--text-primary);transition:all var(--transition-fast);align-items:center;gap:10px;padding:10px 14px;font-size:14px;text-decoration:none;display:flex}.download-platform-mini:hover{background:var(--glass-bg);border-color:var(--accent)}.download-platform-mini-ext{color:var(--text-muted);font-size:12px;font-family:var(--font-mono);margin-left:auto}.drawer-note{color:var(--text-secondary);font-size:13px;line-height:1.6}.drawer-note p{margin:0 0 8px}.drawer-note ul{margin:0;padding-left:18px}.drawer-note li{margin-bottom:4px}.drawer-footer{border-top:1px solid var(--glass-border);padding:16px 24px}@keyframes slideInRight{0%{transform:translate(100%)}to{transform:translate(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@media (max-width:768px){.settings-drawer{border-left:none;width:100vw}}.spin{animation:1s linear infinite spin}@keyframes fadeInUp{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
|
|
2
|
+
.app-layout{height:100dvh;color:var(--text-primary);background:0 0;display:flex;overflow:hidden}.backend-warning-bar{background:var(--warning);color:#fff;border-radius:var(--radius-sm);box-sizing:border-box;justify-content:space-between;align-items:center;gap:12px;width:100%;padding:8px 16px;font-size:13px;font-weight:500;display:flex}.backend-warning-bar button{color:#fff;cursor:pointer;background:0 0;border:none;flex-shrink:0;padding:0 4px;font-size:18px;line-height:1}.sidebar{background:var(--glass-bg-heavy);width:200px;-webkit-backdrop-filter:var(--blur-xl);border-right:1px solid var(--glass-border);box-shadow:var(--glass-shadow-inset);transition:width var(--transition), transform var(--transition);flex-direction:column;flex-shrink:0;display:flex;overflow-y:auto}.sidebar.collapsed{border:none;width:0;overflow:hidden}.sidebar .sidebar-header{border-bottom:1px solid var(--glass-border);align-items:center;gap:8px;min-height:64px;padding:14px 16px;display:flex}.sidebar .sidebar-header.sidebar-header-link{cursor:pointer}.sidebar .sidebar-header h1{background:linear-gradient(135deg, var(--accent), var(--info));-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;font-size:18px;font-weight:700}.sidebar .sidebar-nav{flex:1;padding:12px 8px}.sidebar .sidebar-empty-state{text-align:center;color:var(--text-muted);padding:40px 20px}.sidebar .sidebar-nav-btn{border-radius:var(--radius-md);cursor:pointer;width:100%;color:var(--text-secondary);transition:all var(--transition-fast);background:0 0;border:none;align-items:center;gap:10px;margin-bottom:4px;padding:10px 12px;font-size:13px;font-weight:500;display:flex}.sidebar .sidebar-nav-btn.active{background:var(--accent-soft);color:var(--accent);box-shadow:var(--glass-shadow-inset);font-weight:600}.sidebar .sidebar-nav-btn:hover:not(.active){background:var(--glass-bg-subtle);color:var(--text-primary)}.sidebar .chat-sidebar-footer{border-top:1px solid var(--glass-border);justify-content:space-between;align-items:center;gap:8px;padding:12px 16px;display:flex}.sidebar .user-info{flex:1;align-items:center;gap:8px;min-width:0;display:flex}.sidebar .user-avatar{border-radius:var(--radius-sm);background:var(--glass-bg-subtle);width:24px;height:24px;color:var(--text-secondary);flex-shrink:0;justify-content:center;align-items:center;display:flex}.sidebar .user-name{color:var(--text-primary);text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.sidebar .login-btn{border-radius:var(--radius-sm);background:var(--accent);color:#fff;cursor:pointer;transition:all var(--transition-fast);border:none;flex-shrink:0;padding:4px 10px;font-size:11px;font-weight:500}.sidebar .login-btn:hover{opacity:.85;transform:scale(1.02)}.sidebar .logout-btn{border-radius:var(--radius-sm);border:1px solid var(--glass-border);color:var(--text-secondary);cursor:pointer;transition:all var(--transition-fast);background:0 0;flex-shrink:0;padding:4px 10px;font-size:11px;font-weight:500}.sidebar .logout-btn:hover{background:var(--glass-bg-subtle);color:var(--text-primary)}.sidebar .sidebar-tools{border-top:1px solid var(--glass-border);padding:12px 8px}.sidebar .sidebar-tools-label{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px;align-items:center;gap:6px;margin-bottom:6px;padding-left:12px;font-size:11px;font-weight:500;display:flex}.sidebar-overlay{display:none}.sidebar-toggle-btn{display:flex}.mobile-menu-btn{display:none}.main-content{flex-direction:column;flex:1;min-width:0;display:flex;overflow:hidden}.app-header{border-bottom:1px solid var(--glass-border);background:var(--glass-bg);min-height:64px;-webkit-backdrop-filter:var(--blur-lg);box-sizing:border-box;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;padding:14px 24px;display:flex}.app-header .header-left{align-items:center;gap:12px;display:flex}.app-header .header-title{font-size:16px;font-weight:600}.app-header .header-badge{border-radius:var(--radius-full);background:var(--glass-bg-subtle);border:1px solid var(--glass-border);color:var(--text-secondary);align-items:center;gap:4px;padding:3px 8px;font-size:11px;display:flex}.app-header .header-badge-dot{background:var(--warning);border-radius:50%;width:6px;height:6px}.app-header .header-badge-dot.connected{background:var(--success)}.app-header .header-right{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.search-box{border-radius:var(--radius-md);background:var(--glass-bg-subtle);border:1px solid var(--glass-border);align-items:center;gap:8px;padding:6px 12px;display:flex}.search-box input{color:var(--text-primary);background:0 0;border:none;outline:none;width:100%;padding-left:2px;font-size:12px}.search-box button{cursor:pointer;color:var(--text-secondary);background:0 0;border:none;padding:0;display:flex}.desktop-client-banner{background:var(--glass-bg-heavy);border-radius:var(--radius-md);box-shadow:var(--glass-shadow);border:1px solid #ff950059;align-items:center;gap:12px;margin:16px 24px 0;padding:14px 16px;display:flex}.desktop-client-banner-icon{color:#fff;background:var(--warning);border-radius:var(--radius-sm);flex-shrink:0;justify-content:center;align-items:center;width:42px;height:42px;display:flex}.desktop-client-banner-copy{flex-direction:column;flex:1;gap:3px;min-width:0;display:flex}.desktop-client-banner-copy strong{color:var(--text-primary);font-size:14px;font-weight:700}.desktop-client-banner-copy span{color:var(--text-secondary);font-size:12px;line-height:1.5}.desktop-client-banner .btn{flex-shrink:0}.action-grid{grid-template-columns:1fr 1fr;gap:12px;padding:16px 24px;display:grid;position:relative}.action-card{border:1.5px dashed var(--glass-border-strong);border-radius:var(--radius-lg);text-align:center;cursor:pointer;background:var(--glass-bg-subtle);-webkit-backdrop-filter:var(--blur-sm);transition:all var(--transition);padding:20px;position:relative}.action-card:hover{background:var(--glass-bg);border-color:var(--accent);box-shadow:var(--glass-shadow)}.action-card p{color:var(--accent);font-size:12px;font-weight:500}.action-card.upload.drag-over{border-color:var(--accent);background:var(--accent-soft)}.action-card-download p{color:var(--info)}.action-card-input{opacity:0;cursor:pointer;z-index:1;width:100%;height:100%;position:absolute;inset:0}.breadcrumb{align-items:center;gap:4px;padding:0 24px;font-size:12px;display:flex}.breadcrumb button{color:var(--text-muted);cursor:pointer;border-radius:var(--radius-sm);transition:all var(--transition-fast);background:0 0;border:none;padding:2px 4px}.breadcrumb button:hover{color:var(--text-primary);background:var(--glass-bg-subtle)}.breadcrumb button.current{color:var(--text-secondary);font-weight:500}.breadcrumb .breadcrumb-edit-btn{cursor:pointer;color:var(--text-secondary);background:0 0;border:none;align-items:center;padding:2px;display:flex}.content-grid{flex:1;padding:12px 24px;overflow:auto}.file-grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:16px;display:grid}.empty-state{text-align:center;color:var(--text-muted);padding:48px;font-size:13px}.empty-state.glass{justify-content:center;align-items:center;gap:var(--space-4);padding:var(--space-12) var(--space-6);background:var(--glass-bg-subtle);border:1px dashed var(--glass-border);border-radius:var(--radius-lg);-webkit-backdrop-filter:var(--blur-sm);backdrop-filter:var(--blur-sm);flex-direction:column;display:flex}.empty-state.glass p{max-width:320px;font-size:14px;line-height:1.6}.app-empty-state{flex-direction:column;align-items:center;gap:12px;display:flex}.empty-state-icon{border-radius:var(--radius-full);background:var(--glass-bg);width:64px;height:64px;color:var(--text-muted);justify-content:center;align-items:center;display:flex}.card{border-radius:var(--radius-lg);cursor:pointer;background:var(--glass-bg-subtle);-webkit-backdrop-filter:var(--blur-md);border:1px solid var(--glass-border);transition:all var(--transition);box-shadow:var(--glass-shadow-inset);flex-direction:column;align-items:center;padding:16px;display:flex}.card:hover{border-color:var(--glass-border-strong);background:var(--glass-bg);box-shadow:var(--glass-shadow);transform:translateY(-2px)}.card.selected{background:var(--accent-soft);border-color:var(--accent);box-shadow:0 0 0 1px var(--accent), var(--glass-shadow)}.card-icon{border-radius:var(--radius-md);width:56px;height:56px;box-shadow:var(--shadow-sm);justify-content:center;align-items:center;margin-bottom:10px;display:flex}.card-icon.folder{background:linear-gradient(135deg,#818cf8,#6366f1)}.card-icon.file{background:linear-gradient(135deg,#a78bfa,#8b5cf6)}.card-icon.starred{background:linear-gradient(135deg,#fbbf24,#f59e0b)}.card-icon.trash{background:linear-gradient(135deg,#94a3b8,#64748b)}.card-name{text-align:center;text-overflow:ellipsis;white-space:nowrap;max-width:100%;color:var(--text-primary);font-size:12px;font-weight:500;overflow:hidden}.card-date{color:var(--text-muted);margin-top:2px;font-size:10px}.modal-overlay{top:var(--modal-visual-top,0px);height:var(--modal-visual-height,100dvh);z-index:200;justify-content:center;align-items:center;animation:.2s fadeIn;display:flex;position:fixed;left:0;right:0}.modal-overlay-backdrop{z-index:0;-webkit-backdrop-filter:var(--blur-xl);pointer-events:none;background:#0000004d;position:absolute;inset:0}.modal-glass{z-index:1;border-radius:var(--radius-lg);background:var(--glass-bg-heavy);width:380px;max-width:calc(100vw - 32px);-webkit-backdrop-filter:var(--blur-2xl);border:1px solid var(--glass-border);box-shadow:var(--glass-shadow-lg), var(--glass-shadow-inset);padding:24px;animation:.25s scaleIn;position:relative}.modal-header{justify-content:space-between;align-items:center;margin-bottom:16px;display:flex}.modal-header h3{font-size:16px;font-weight:600}.modal-header button{cursor:pointer;color:var(--text-muted);background:0 0;border:none}.welcome-modal{text-align:center}.welcome-modal h2{margin-bottom:12px;font-size:18px;font-weight:600}.welcome-modal p{color:var(--text-secondary);margin-bottom:20px;font-size:13px;line-height:1.6}.welcome-steps{justify-content:center;gap:6px;margin-bottom:20px;display:flex}.welcome-step-dot{background:var(--glass-bg-subtle);border:1px solid var(--glass-border);border-radius:50%;width:6px;height:6px}.welcome-step-dot.active{background:var(--accent);border-color:var(--accent)}.welcome-actions{justify-content:center;gap:10px;display:flex}.welcome-success-icon{background:#34c75926;border:1px solid #34c7594d;border-radius:50%;justify-content:center;align-items:center;width:48px;height:48px;margin:0 auto 16px;display:flex}.spinner{border:2px solid;border-top-color:#0000;border-radius:50%;width:16px;height:16px;animation:.6s linear infinite spin;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.settings-modal .settings-title{color:var(--text-primary);font-size:18px;font-weight:600}.settings-modal .settings-label{color:var(--text-primary);margin-bottom:8px;font-size:13px;font-weight:500;display:block}.settings-modal .settings-row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.settings-modal .settings-hint{color:var(--text-muted);margin-top:8px;font-size:11px}.settings-modal .settings-divider{border-top:1px solid var(--glass-border);padding-top:16px}.settings-modal .settings-about{text-align:center;margin-bottom:16px}.settings-modal .settings-about h3{color:var(--text-primary);margin-bottom:4px;font-size:16px;font-weight:600}.settings-modal .settings-about p{color:var(--text-muted);font-size:12px}.network-addresses{flex-direction:column;gap:8px;margin-top:8px;display:flex}.address-item{background:var(--glass-bg-subtle);border-radius:var(--radius-md);border:1px solid var(--glass-border);align-items:center;gap:8px;padding:8px 12px;font-size:13px;display:flex}.address-type{border-radius:var(--radius-sm);white-space:nowrap;padding:2px 8px;font-size:11px;font-weight:600;display:inline-block}.address-type-local{color:var(--text-secondary);background:#64748b26}.address-type-lan{background:var(--accent-soft);color:var(--accent)}.address-type-tailscale{color:var(--success);background:#34c7591f}.address-type-zerotier{color:var(--info);background:#5ac8fa1f}.address-url{color:var(--text-primary);text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:12px;overflow:hidden}.page-header{align-items:center;gap:var(--space-3);margin-bottom:var(--space-6);display:flex}.page-title{font-size:20px;font-weight:600}.qr-wrap{padding:var(--space-4);border-radius:var(--radius-lg);width:fit-content;margin:0 auto var(--space-3);background:#fff;justify-content:center;display:flex}.page-footer{align-items:center;gap:var(--space-3);margin-top:var(--space-4);flex-direction:column;display:flex}.input-panel{background:var(--glass-bg);-webkit-backdrop-filter:var(--blur-md);backdrop-filter:var(--blur-md);border:1px solid var(--glass-border);border-radius:var(--radius-lg);padding:var(--space-5);margin-bottom:var(--space-6);box-shadow:var(--glass-shadow)}.textarea{border:1px solid var(--glass-border);border-radius:var(--radius-md);background:var(--glass-bg-subtle);width:100%;-webkit-backdrop-filter:var(--blur-sm);backdrop-filter:var(--blur-sm);color:var(--text-primary);font-size:14px;font-family:var(--font-sans);transition:border-color var(--transition-fast);resize:none;outline:none;padding:12px 14px}.textarea:focus{border-color:var(--accent)}.textarea::placeholder{color:var(--text-muted)}.input-wrap{position:relative}.input-wrap .input{padding-right:40px}.input-eye{color:var(--text-muted);cursor:pointer;background:0 0;border:none;padding:4px;position:absolute;top:50%;right:10px;transform:translateY(-50%)}.input-eye:hover{color:var(--text-primary)}.loading-spinner{border:2px solid var(--glass-border);border-top-color:var(--accent);border-radius:var(--radius-full);width:32px;height:32px;margin:auto;animation:.8s linear infinite spin}.mono{font-family:var(--font-mono);word-break:break-all;color:var(--text-primary);flex:1;font-size:12px}.mono-row{align-items:center;gap:var(--space-2);background:var(--glass-bg-subtle);border-radius:var(--radius-md);padding:10px 12px;display:flex}.mono-row.danger{background:#ff3b3014}.mono-row.danger .mono{color:var(--danger)}.link{color:var(--accent);align-items:center;gap:4px;font-size:13px;display:inline-flex}.inline-link{color:var(--accent);margin-top:var(--space-1);align-items:center;gap:4px;font-size:13px;display:inline-flex}.tool-link{align-items:center;gap:var(--space-2);background:var(--glass-bg);-webkit-backdrop-filter:var(--blur-md);backdrop-filter:var(--blur-md);border:1px solid var(--glass-border);border-radius:var(--radius-md);color:var(--accent);transition:all var(--transition-fast);padding:10px 20px;font-size:14px;font-weight:500;display:inline-flex}.tool-link:hover{background:var(--accent-soft)}.hint-text{color:var(--text-muted);font-size:12px}.textarea.mono{font-family:var(--font-mono);resize:none;font-size:12px}.danger{color:var(--danger)}.input-modal h3{color:var(--text-primary);margin-bottom:16px;font-size:16px;font-weight:600}.input-modal-error{color:var(--danger);margin-top:8px;font-size:12px;line-height:1.5}.modal-actions{gap:8px;margin-top:16px;display:flex}.modal-actions .btn{border-radius:var(--radius-md);flex:1;padding-inline:12px;font-size:13px}.download-modal{flex-direction:column;gap:14px;display:flex}.download-modal .modal-header{margin-bottom:2px}.download-link-row{grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px;display:grid}.download-check-btn{justify-content:center;gap:6px;min-width:88px;padding:10px 14px}.download-check-status{border-radius:var(--radius-md);border:1px solid var(--glass-border);background:var(--glass-bg-subtle);min-height:38px;color:var(--text-secondary);align-items:flex-start;gap:8px;padding:10px 12px;font-size:12px;line-height:1.45;display:flex}.download-check-status svg{flex:none;margin-top:1px}.download-check-status.success{color:var(--success);background:#34c7591a;border-color:#34c75959}.download-check-status.error{color:var(--danger);background:#ff3b301a;border-color:#ff3b3059}.download-modal>.btn-full{justify-content:center;gap:6px;margin-top:2px}.confirm-modal h3{color:var(--text-primary);margin-bottom:12px;font-size:16px;font-weight:600}.confirm-modal p{color:var(--text-secondary);margin-bottom:20px;font-size:13px}.move-modal .move-breadcrumb{flex-wrap:wrap;gap:6px;margin-bottom:12px;display:flex}.move-modal .move-breadcrumb-btn{border-radius:var(--radius-sm);background:var(--glass-bg-subtle);color:var(--text-secondary);cursor:pointer;transition:all var(--transition-fast);border:none;padding:4px 8px;font-size:12px}.move-modal .move-breadcrumb-btn:hover{background:var(--glass-bg)}.move-modal .move-breadcrumb-btn.active{background:var(--accent-soft);color:var(--accent)}.move-modal .move-folder-list{max-height:200px;margin-bottom:16px;overflow:auto}.move-modal .move-folder-item{border-radius:var(--radius-sm);cursor:pointer;width:100%;color:var(--text-primary);text-align:left;transition:all var(--transition-fast);background:0 0;border:none;align-items:center;gap:8px;padding:8px 10px;font-size:13px;display:flex}.move-modal .move-folder-item:hover{background:var(--glass-bg-subtle)}.move-modal .move-folder-item.selected{background:var(--accent-soft);color:var(--accent)}.move-modal .move-new-folder{gap:8px;margin-bottom:16px;display:flex}.move-modal .move-new-folder input{border-radius:var(--radius-sm);border:1px solid var(--glass-border);background:var(--glass-bg-subtle);color:var(--text-primary);transition:all var(--transition-fast);outline:none;flex:1;padding:8px 10px;font-size:12px}.move-modal .move-new-folder input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.share-modal .share-link-box{align-items:center;gap:10px;margin-bottom:16px;display:flex}.share-modal .share-link-text{border-radius:var(--radius-md);background:var(--glass-bg-subtle);border:1px solid var(--glass-border);font-size:13px;font-family:var(--font-mono);color:var(--text-primary);word-break:break-all;flex:1;padding:12px 14px}.share-modal .share-storage-note{border-radius:var(--radius-md);background:var(--glass-bg-subtle);border:1px solid var(--glass-border);color:var(--text-secondary);justify-content:space-between;align-items:center;gap:12px;padding:10px 12px;font-size:12px;line-height:1.5;display:flex}.share-modal .share-storage-note span{min-width:0}.share-modal .share-storage-note button{flex:none}.share-modal .share-copy-btn{border-radius:var(--radius-md);background:var(--accent);color:#fff;cursor:pointer;width:44px;transition:all var(--transition-fast);border:none}.share-modal .share-copy-btn:hover{background:var(--accent-hover);transform:scale(1.05)}.share-modal .share-copy-btn.copied{background:var(--success)}.preview-overlay{z-index:200;-webkit-backdrop-filter:var(--blur-lg);background:#000000d9;justify-content:center;align-items:center;padding:24px;animation:.2s fadeIn;display:flex;position:fixed;inset:0}.preview-overlay .preview-close{border-radius:var(--radius-md);border:1px solid var(--glass-border);background:var(--glass-bg-subtle);width:36px;height:36px;-webkit-backdrop-filter:var(--blur-sm);cursor:pointer;color:#fff;transition:all var(--transition-fast);justify-content:center;align-items:center;display:flex;position:absolute;top:20px;right:20px}.preview-overlay .preview-close:hover{background:var(--glass-bg);transform:scale(1.05)}.preview-overlay img,.preview-overlay video{border-radius:var(--radius-lg);max-width:100%;max-height:80dvh;box-shadow:var(--glass-shadow-lg)}.preview-overlay .preview-audio{background:var(--glass-bg-heavy);-webkit-backdrop-filter:var(--blur-2xl);border:1px solid var(--glass-border);border-radius:var(--radius-lg);min-width:320px;box-shadow:var(--glass-shadow-lg), var(--glass-shadow-inset);flex-direction:column;align-items:center;gap:20px;padding:40px 48px;display:flex}.preview-overlay .preview-audio-icon{background:var(--accent-soft);border-radius:50%;justify-content:center;align-items:center;width:72px;height:72px;display:flex}.preview-overlay .preview-audio-filename{color:var(--text-secondary);text-align:center;text-overflow:ellipsis;white-space:nowrap;max-width:100%;margin:0;font-size:14px;overflow:hidden}.preview-overlay .preview-audio-player{width:100%;max-width:400px;height:40px}.batch-bar{border-radius:var(--radius-lg);background:var(--glass-bg-heavy);-webkit-backdrop-filter:var(--blur-2xl);border:1px solid var(--glass-border);box-shadow:var(--glass-shadow-lg), var(--glass-shadow-inset);z-index:100;align-items:center;gap:8px;padding:10px 16px;display:flex;position:fixed;bottom:24px;left:50%;transform:translate(-50%)}.batch-bar .batch-info{white-space:nowrap;color:var(--text-secondary);font-size:12px}.batch-bar .batch-dismiss{cursor:pointer;color:var(--text-muted);background:0 0;border:none;padding:4px;display:flex}.batch-bar .batch-divider{background:var(--glass-border);width:1px;height:20px}.transfer-modal{max-height:70dvh;overflow:auto}.transfer-modal .transfer-item{border-bottom:1px solid var(--glass-border);padding:10px 0}.transfer-modal .transfer-item-header{align-items:center;gap:8px;margin-bottom:4px;display:flex}.transfer-modal .transfer-item-name{text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:12px;font-weight:500;overflow:hidden}.transfer-modal .transfer-item-cancel{cursor:pointer;color:var(--danger);background:0 0;border:none;padding:2px}.transfer-modal .transfer-progress-row{align-items:center;gap:8px;display:flex}.transfer-modal .transfer-progress-meter{border-radius:var(--radius-full);background:var(--glass-bg-subtle);appearance:none;border:0;flex:1;height:4px;overflow:hidden}.transfer-modal .transfer-progress-meter::-webkit-progress-bar{background:var(--glass-bg-subtle)}.transfer-modal .transfer-progress-meter::-webkit-progress-value{border-radius:var(--radius-full);background:var(--accent);transition:width .2s}.transfer-modal .transfer-progress-meter::-moz-progress-bar{border-radius:var(--radius-full);background:var(--accent)}.transfer-modal .transfer-progress-meter.download::-webkit-progress-value{background:var(--info)}.transfer-modal .transfer-progress-meter.download::-moz-progress-bar{background:var(--info)}.transfer-modal .transfer-progress-meter.error::-webkit-progress-value{background:var(--danger)}.transfer-modal .transfer-progress-meter.error::-moz-progress-bar{background:var(--danger)}.transfer-modal .transfer-progress-meter.cancelled::-webkit-progress-value{background:var(--warning)}.transfer-modal .transfer-progress-meter.cancelled::-moz-progress-bar{background:var(--warning)}.transfer-modal .transfer-progress-text{color:var(--text-muted);text-align:right;min-width:32px;font-size:10px}@keyframes toastSlideIn{0%{opacity:0;transform:translate(-50%)translateY(16px)}to{opacity:1;transform:translate(-50%)translateY(0)}}.toast{z-index:9999;border-radius:var(--radius-lg);box-shadow:var(--glass-shadow-lg);-webkit-backdrop-filter:var(--blur-lg);border:1px solid var(--glass-border);padding:12px 20px;font-size:13px;font-weight:500;animation:.25s toastSlideIn;position:fixed;bottom:80px;left:50%;transform:translate(-50%)}.toast.success{color:#fff;background:#34c75999}.toast.error{color:#fff;background:#ff3b3099}.toast.warning{color:#fff;background:#ff950099}.toast.info{color:#fff;background:#5ac8fa99}.toast-stack-0{bottom:80px}.toast-stack-1{bottom:140px}.toast-stack-2{bottom:200px}.toast-stack-3{bottom:260px}.toast-stack-4{bottom:320px}.toast-stack-5{bottom:380px}.welcome-path-section{text-align:left;margin-bottom:20px}.welcome-path-section .path-label{color:var(--text-muted);margin-bottom:4px;font-size:12px}.welcome-path-section .path-value{color:var(--text-primary);font-size:12px;font-family:var(--font-mono);background:var(--glass-bg-subtle);border-radius:var(--radius-sm);word-break:break-all;border:1px solid var(--glass-border);margin-bottom:12px;padding:8px 10px}.welcome-path-section .path-hint{color:var(--text-muted);margin-top:4px;font-size:11px}.login-modal{width:100%}.login-modal-header{justify-content:space-between;align-items:center;margin-bottom:20px;display:flex}.login-modal-header h3{color:var(--text-primary);font-size:16px;font-weight:600}.login-modal-close{cursor:pointer;color:var(--text-muted);border-radius:var(--radius-sm);transition:all var(--transition-fast);background:0 0;border:none;justify-content:center;align-items:center;padding:4px;display:flex}.login-modal-close:hover{color:var(--text-primary);background:var(--glass-bg-subtle)}.login-avatar-preview{border-radius:var(--radius-md);width:64px;height:64px;margin:0 auto 8px;display:block}.user-avatar-img{border-radius:var(--radius-sm);flex-shrink:0;width:24px;height:24px}.msg-avatar{border-radius:var(--radius-sm);flex-shrink:0;width:28px;height:28px;margin-right:10px}.login-modal-body{flex-direction:column;gap:12px;display:flex}.login-tip{color:var(--text-secondary);text-align:center;margin-bottom:4px;font-size:13px}.login-error{border-radius:var(--radius-sm);color:var(--danger);background:#ff3b301a;padding:8px 10px;font-size:12px;line-height:1.4}.login-password-wrapper{align-items:center;display:flex;position:relative}.login-password-wrapper .input{padding-right:40px}.login-password-toggle{cursor:pointer;color:var(--text-muted);border-radius:var(--radius-sm);transition:all var(--transition-fast);background:0 0;border:none;justify-content:center;align-items:center;padding:4px;display:flex;position:absolute;right:10px}.login-password-toggle:hover{color:var(--text-primary);background:var(--glass-bg-subtle)}.login-buttons-row{gap:8px;display:flex}.login-buttons-row .btn-primary,.login-buttons-row .btn-secondary{flex:1;padding-inline:12px;font-size:13px}.connect-modal{width:100%}.connect-modal-header{justify-content:space-between;align-items:center;margin-bottom:20px;display:flex}.connect-modal-header h3{color:var(--text-primary);font-size:16px;font-weight:600}.connect-modal-close{cursor:pointer;color:var(--text-muted);border-radius:var(--radius-sm);transition:all var(--transition-fast);background:0 0;border:none;justify-content:center;align-items:center;padding:4px;display:flex}.connect-modal-close:hover{color:var(--text-primary);background:var(--glass-bg-subtle)}.connect-modal-body{flex-direction:column;gap:12px;display:flex}.preview-text-container{background:var(--glass-bg-heavy);width:90vw;max-width:900px;max-height:80dvh;-webkit-backdrop-filter:var(--blur-2xl);border:1px solid var(--glass-border);border-radius:var(--radius-lg);box-shadow:var(--glass-shadow-lg), var(--glass-shadow-inset);flex-direction:column;padding:20px;display:flex;overflow:auto}.preview-text-header{border-bottom:1px solid var(--glass-border);color:var(--text-secondary);justify-content:space-between;align-items:center;margin-bottom:16px;padding-bottom:12px;font-size:13px;display:flex}.preview-text{color:var(--text-primary);font-family:var(--font-mono);white-space:pre-wrap;word-break:break-all;max-height:100%;margin:0;font-size:13px;line-height:1.6;overflow:auto}.preview-text-loading{color:var(--text-secondary);flex-direction:column;justify-content:center;align-items:center;gap:12px;padding:40px 20px;display:flex}.preview-text-spinner{opacity:.6;animation:.8s linear infinite spin}.preview-text-loading-hint{opacity:.6;text-align:center;max-width:300px;font-size:12px}.preview-media-wrapper{justify-content:center;align-items:center;min-width:100px;min-height:100px;display:flex;position:relative}.preview-media-wrapper .preview-loading{z-index:1;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.preview-loading-spinner{border:3px solid #fff3;border-top-color:#fff;border-radius:50%;width:32px;height:32px;animation:.8s linear infinite spin}.preview-media-wrapper img,.preview-media-wrapper video{border-radius:var(--radius-lg);max-width:100%;max-height:80dvh}.preview-unsupported{background:var(--glass-bg-heavy);border-radius:var(--radius-lg);text-align:center;color:var(--text-primary);border:1px solid var(--glass-border);padding:40px}.preview-unsupported p:first-of-type{word-break:break-all;font-size:14px;font-weight:500}.btn-nowrap{white-space:nowrap}.btn-shutdown{margin-top:20px}.settings-section{margin-bottom:20px}.settings-divider-top{margin-top:20px}.settings-subtitle{text-align:center;color:var(--text-secondary);font-size:12px}.icon-inline{vertical-align:middle;margin-right:6px}.move-modal-desc{color:var(--text-secondary);margin-bottom:12px;font-size:12px}.move-modal-hint{color:var(--text-muted);margin-bottom:12px;font-size:11px}.breadcrumb-separator{color:var(--text-secondary)}.preview-file-icon{opacity:.5;margin-bottom:12px}.empty-transfer{text-align:center;color:var(--text-muted);padding:24px;font-size:13px}.btn-empty-trash{color:var(--danger);background:#ff3b301a}.btn-empty-trash:hover:not(:disabled){background:#ff3b3026}.btn-star{background:var(--warning);color:#fff}.btn-star:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 4px 16px #ff95004d}.btn-move{background:var(--accent);color:#fff}.btn-move:hover:not(:disabled){background:var(--accent-hover);transform:translateY(-1px);box-shadow:0 4px 16px #5e6ad24d}.move-modal-empty{color:var(--text-secondary);text-align:center;padding:16px;font-size:12px}.preview-unsupported-hint{opacity:.7;margin-top:8px;font-size:12px}.action-grid-icon{margin-bottom:8px}@media (max-width:768px){.input,.textarea,.search-box input{font-size:16px}.sidebar{z-index:300;transition:transform var(--transition);width:240px;position:fixed;top:0;bottom:0;left:0;transform:translate(-100%)}.sidebar.open{transform:translate(0)}.sidebar-overlay{z-index:299;opacity:0;visibility:hidden;transition:all var(--transition);background:#0006;display:block;position:fixed;inset:0}.sidebar-overlay.visible{opacity:1;visibility:visible}.modal-overlay{z-index:301;align-items:flex-end;padding:0}.modal-overlay-backdrop{-webkit-backdrop-filter:var(--blur-lg)}.modal-glass{border-radius:var(--radius-lg) var(--radius-lg) 0 0;width:100%;max-width:100%;max-height:calc(var(--modal-visual-height,100dvh) - 12px);overscroll-behavior:contain;overflow:auto}.sidebar-toggle-btn{display:flex}.app-header{gap:8px;min-height:56px;padding:12px 16px}.app-header .header-right{gap:4px}.desktop-client-banner{flex-direction:column;align-items:stretch;margin:12px 16px 0}.desktop-client-banner-icon{width:36px;height:36px}.desktop-client-banner .btn{width:100%}.action-grid{grid-template-columns:1fr;gap:8px;padding:12px 16px}.action-card{padding:14px}.breadcrumb{padding:0 16px}.content-grid{padding:12px 16px}.file-grid{grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:10px}.card{padding:12px}.card-icon{border-radius:var(--radius-sm);width:44px;height:44px;margin-bottom:8px}.card-name{font-size:11px}.welcome-modal,.settings-modal,.input-modal,.confirm-modal,.move-modal,.share-modal,.download-modal,.transfer-modal{border-radius:var(--radius-lg) var(--radius-lg) 0 0;width:100%;max-width:100%}.download-link-row{grid-template-columns:1fr}.download-check-btn{width:100%}.toast{width:min(100vw - 24px,420px);left:50%}.batch-bar{flex-wrap:wrap;justify-content:center;align-items:center;gap:10px;padding:14px 40px 12px 16px;left:12px;right:12px;transform:none}.batch-bar .batch-info{text-align:center;width:100%;color:var(--text-primary);margin-bottom:2px;font-size:13px;font-weight:500}.batch-bar .batch-dismiss{background:var(--glass-bg-subtle);transition:background var(--transition);border-radius:50%;padding:6px;position:absolute;top:8px;right:8px}.batch-bar .batch-dismiss:hover{background:var(--glass-bg)}.batch-bar .batch-divider{display:none}.batch-bar .btn-sm{border-radius:var(--radius-md);min-width:64px;padding-inline:14px;font-size:13px}.preview-overlay{padding:12px}}@media (max-width:480px){.file-grid{grid-template-columns:repeat(auto-fill,minmax(90px,1fr));gap:8px}.card{padding:10px}.card-icon{width:40px;height:40px;margin-bottom:6px}.card-name{font-size:10px}.app-header{min-height:52px;padding:12px}.app-header .header-title{font-size:14px}.app-header .header-badge{padding:2px 6px;font-size:10px}.action-grid,.content-grid{padding:10px 12px}.breadcrumb{padding:0 12px;font-size:11px}.batch-bar{gap:8px;padding:12px 12px 10px}.batch-bar .batch-info{font-size:12px}.batch-bar .btn-sm{min-width:56px;padding-inline:12px;font-size:12px}}.app-home{text-align:center;flex-direction:column;justify-content:center;align-items:center;min-height:calc(100dvh - 144px);padding:0 24px;animation:.4s fadeInUp;display:flex}.app-home-card{border-radius:var(--radius-xl);background:var(--glass-bg-heavy);-webkit-backdrop-filter:var(--blur-2xl);border:1px solid var(--glass-border);box-shadow:var(--glass-shadow-lg), var(--glass-shadow-inset);flex-direction:column;align-items:center;width:100%;max-width:420px;padding:40px;display:flex}.app-home-card h1{letter-spacing:-.03px;background:linear-gradient(135deg, var(--accent), var(--info));-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;margin-top:16px;margin-bottom:8px;font-size:40px;font-weight:700}.app-home-badge{border-radius:var(--radius-full);background:var(--glass-bg-subtle);color:var(--text-secondary);border:1px solid var(--glass-border);align-items:center;gap:6px;margin-bottom:24px;padding:4px 12px;font-size:12px;font-weight:500;display:inline-flex}.app-home-badge .badge-dot{background:var(--success);border-radius:50%;flex-shrink:0;width:6px;height:6px;display:inline-block}.app-home-card p{color:var(--text-secondary);max-width:40ch;margin-bottom:32px;font-size:16px;line-height:1.6}.app-home-btn{padding:14px 32px;font-size:16px;font-weight:600}.app-home-btn-secondary{margin-top:12px;padding:10px 24px;font-size:14px}.drawer-label{color:var(--text-primary);margin-bottom:8px;font-size:13px;font-weight:500;display:block}.drawer-hint{color:var(--text-muted);margin-top:8px;font-size:11px}.drawer-hint-spaced{margin-bottom:12px}.remote-node-form{flex-direction:column;gap:8px;display:flex}.drawer-status{color:var(--text-secondary);margin-top:8px;font-size:11px}.drawer-status.status-success{color:var(--success)}.drawer-status.status-error{color:var(--error)}.spin{animation:1s linear infinite spin}@keyframes fadeInUp{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
|
|
3
3
|
.ProseMirror{word-wrap:break-word;white-space:pre-wrap;white-space:break-spaces;-webkit-font-variant-ligatures:none;font-variant-ligatures:none;font-feature-settings:"liga" 0;position:relative}.ProseMirror pre{white-space:pre-wrap}.ProseMirror li{position:relative}.ProseMirror-hideselection ::selection{background:0 0}.ProseMirror-hideselection ::selection{background:0 0}.ProseMirror-hideselection{caret-color:#0000}.ProseMirror [draggable][contenteditable=false]{-webkit-user-select:text;user-select:text}.ProseMirror-selectednode{outline:2px solid #8cf}li.ProseMirror-selectednode{outline:none}li.ProseMirror-selectednode:after{content:"";pointer-events:none;border:2px solid #8cf;position:absolute;inset:-2px -2px -2px -32px}img.ProseMirror-separator{border:none!important;margin:0!important;display:inline!important}
|
|
4
4
|
|
|
5
5
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.portal-page{min-height:calc(100dvh - 144px)}.portal-hero{text-align:center;padding:64px 24px 32px}.portal-hero-title{letter-spacing:-.03em;background:linear-gradient(135deg, var(--text-primary), var(--accent));-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;margin-bottom:8px;font-size:48px;font-weight:700;line-height:1.1}.portal-hero-subtitle{color:var(--text-secondary);font-size:18px}.portal-desktop-callout{text-align:left;background:var(--glass-bg-heavy);border-radius:var(--radius-lg);width:min(100%,720px);box-shadow:var(--glass-shadow);border:1px solid #ff950059;justify-content:space-between;align-items:center;gap:18px;margin:28px auto 0;padding:18px 20px;display:flex}.portal-desktop-callout div{flex-direction:column;gap:4px;min-width:0;display:flex}.portal-desktop-callout strong{color:var(--text-primary);font-size:16px;font-weight:700}.portal-desktop-callout span{color:var(--text-secondary);font-size:14px;line-height:1.6}.portal-desktop-callout .btn{flex-shrink:0}@media (max-width:768px){.portal-hero{padding:40px 24px 24px}.portal-hero-title{font-size:36px}.portal-hero-subtitle{font-size:16px}.portal-desktop-callout{flex-direction:column;align-items:stretch;padding:16px}.portal-desktop-callout .btn{width:100%}}.portal-cards-section{padding-bottom:32px}.portal-cards{grid-template-columns:repeat(5,minmax(0,1fr));gap:16px;display:grid}@media (max-width:1100px){.portal-cards{grid-template-columns:repeat(3,1fr)}}@media (max-width:768px){.portal-cards{grid-template-columns:1fr}}.portal-card{text-align:center;background:var(--glass-bg-subtle);-webkit-backdrop-filter:var(--blur-sm);border:1px solid var(--glass-border);border-radius:var(--radius-lg);cursor:pointer;transition:all var(--transition);border:2px solid #0000;flex-direction:column;align-items:center;gap:6px;padding:28px 20px;display:flex;position:relative}.portal-card:hover{background:var(--glass-bg);box-shadow:var(--glass-shadow);transform:translateY(-2px)}.portal-card.active{background:var(--glass-bg);border-color:var(--accent);box-shadow:0 4px 24px #5e6ad226}.portal-card-open-btn{opacity:.5;position:absolute;top:12px;right:12px}.portal-card:hover .portal-card-open-btn,.portal-card.active .portal-card-open-btn{opacity:1}.portal-card-icon{color:var(--accent);margin-bottom:4px}.portal-card-title{color:var(--text-primary);font-size:17px;font-weight:600}.portal-card-subtitle{color:var(--text-secondary);font-size:13px}.portal-node-actions{flex-wrap:wrap;justify-content:center;gap:12px;margin-top:18px;display:flex}.portal-node-actions .btn{min-width:128px}.portal-card-status{border-radius:var(--radius-full);background:var(--glass-bg-subtle);border:1px solid var(--glass-border);align-items:center;gap:5px;margin-top:6px;padding:3px 10px;font-size:11px;font-weight:500;display:inline-flex}.status-dot{border-radius:50%;width:7px;height:7px;display:inline-block}.status-dot.checking{background:var(--warning);animation:1.2s ease-in-out infinite pulse-dot}.status-dot.connected{background:var(--success)}.status-dot.disconnected{background:var(--danger)}.status-dot.ready{background:var(--info)}@keyframes pulse-dot{0%,to{opacity:.4;transform:scale(.9)}50%{opacity:1;transform:scale(1)}}.portal-marketing{padding-bottom:64px}.portal-marketing-inner{background:var(--glass-bg-subtle);-webkit-backdrop-filter:var(--blur-sm);border:1px solid var(--glass-border);border-radius:var(--radius-lg);padding:40px;animation:.3s ease-out fadeInUp}@media (max-width:768px){.portal-marketing-inner{padding:24px}}.portal-marketing-header h2{margin-bottom:12px;font-size:28px;font-weight:600}.portal-marketing-header p{color:var(--text-secondary);max-width:60ch;font-size:16px;line-height:1.7}@media (max-width:768px){.portal-marketing-header h2{font-size:22px}.portal-marketing-header p{font-size:14px}}.portal-marketing-features{grid-template-columns:repeat(2,1fr);gap:12px;margin-top:28px;display:grid}@media (max-width:768px){.portal-marketing-features{grid-template-columns:1fr}}.portal-feature-item{color:var(--text-secondary);align-items:flex-start;gap:10px;font-size:14px;line-height:1.5;display:flex}.portal-feature-icon{color:var(--accent);flex-shrink:0;margin-top:1px}.portal-marketing-steps{border-top:1px solid var(--glass-border);flex-direction:column;gap:16px;margin-top:32px;padding-top:32px;display:flex}.portal-step{align-items:flex-start;gap:14px;display:flex}.portal-step-num{background:var(--accent);color:#fff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:32px;height:32px;font-size:13px;font-weight:700;display:flex}.portal-step-content strong{color:var(--text-primary);font-size:15px;font-weight:600}.portal-step-content p{color:var(--text-secondary);margin-top:2px;font-size:13px}.portal-step-code{background:var(--glass-bg-subtle);border:1px solid var(--glass-border);border-radius:var(--radius-sm);font-size:13px;font-family:var(--font-mono);color:var(--text-primary);margin-top:8px;padding:10px 14px;display:block}.portal-step-link{margin-top:6px}.portal-step-link a{color:var(--accent);align-items:center;gap:4px;font-size:13px;display:inline-flex}.portal-actions{border-top:1px solid var(--glass-border);flex-wrap:wrap;gap:12px;margin-top:32px;padding-top:32px;display:flex}.portal-actions .mkt-btn-primary,.portal-actions .mkt-btn-secondary{align-items:center;gap:6px;display:inline-flex}
|