PageSourceSearch

https://pltt.ai/_next/static/chunks/0f2pokypp6m1y.js

js pltt.ai collected 2026-10-05 15:19:10 UTC 34,809 bytes, 415 lines download raw bytes

1(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,522016,(e,t,r)=>{"use strict";e.i(247167),Object.defineProperty(r,"__esModule",{value:!0});var n={default:function(){return x},useLinkStatus:function(){return w}};for(var o in n)Object.defineProperty(r,o,{enumerable:!0,get:n[o]});let a=e.r(190809),i=e.r(843476),s=a._(e.r(271645)),l=e.r(195057),p=e.r(8372),c=e.r(818581),d=e.r(718967),u=e.r(405550),g=e.r(388540),h=e.r(91949),f=e.r(573668),m=e.r(509396);function x(t){var r;let n,o,a,[x,w]=(0,s.useOptimistic)(h.IDLE_LINK_STATUS),v=(0,s.useRef)(null),{href:y,as:j,children:k,prefetch:S=null,passHref:N,replace:P,shallow:E,scroll:T,onClick:_,onMouseEnter:C,onTouchStart:L,legacyBehavior:O=!1,onNavigate:A,transitionTypes:M,ref:z,unstable_dynamicOnHover:R,...I}=t;n=k,O&&("string"==typeof n||"number"==typeof n)&&(n=(0,i.jsx)("a",{children:n}));let $=s.default.useContext(p.AppRouterContext),U=!1!==S,F=!1===S?"none":!0===S?"full":"auto",B="none"!==F?"auto"===F?m.FetchStrategy.PPR:m.FetchStrategy.Full:m.FetchStrategy.PPR,D="string"==typeof(r=j||y)?r:(0,l.formatUrl)(r);if(O){if(n?.$$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});o=s.default.Children.only(n)}let W=O?o&&"object"==typeof o&&o.ref:z,G,K=s.default.useCallback(e=>(null!==$&&(v.current=(0,h.mountLinkInstance)(e,D,$,B,U,w,G)),()=>{v.current&&((0,h.unmountLinkForCurrentNavigation)(v.current),v.current=null),(0,h.unmountPrefetchableInstance)(e)}),[U,D,$,B,w,G]),H={ref:(0,c.useMergedRef)(K,W),onClick(t){O||"function"!=typeof _||_(t),O&&o.props&&"function"==typeof o.props.onClick&&o.props.onClick(t),!$||t.defaultPrevented||function(t,r,n,o,a,i,l,p="none"){if("u">typeof window){let c,{nodeName:d}=t.currentTarget;if("A"===d.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,f.isLocalURL)(r)){o&&(t.preventDefault(),location.replace(r));return}if(t.preventDefault(),i){let e=!1;if(i({preventDefault:()=>{e=!0}}),e)return}let{dispatchNavigateAction:u}=e.r(699781);s.default.startTransition(()=>{u(r,o?"replace":"push",!1===a?g.ScrollBehavior.NoScroll:g.ScrollBehavior.Default,n.current,l,p)})}}(t,D,v,P,T,A,M,F)},onMouseEnter(e){O||"function"!=typeof C||C(e),O&&o.props&&"function"==typeof o.props.onMouseEnter&&o.props.onMouseEnter(e),$&&U&&(0,h.onNavigationIntent)(e.currentTarget,!0===R)},onTouchStart:function(e){O||"function"!=typeof L||L(e),O&&o.props&&"function"==typeof o.props.onTouchStart&&o.props.onTouchStart(e),$&&U&&(0,h.onNavigationIntent)(e.currentTarget,!0===R)}};return(0,d.isAbsoluteUrl)(D)?H.href=D:O&&!N&&("a"!==o.type||"href"in o.props)||(H.href=(0,u.addBasePath)(D)),a=O?s.default.cloneElement(o,H):(0,i.jsx)("a",{...I,...H,children:n}),(0,i.jsx)(b.Provider,{value:x,children:a})}let b=(0,s.createContext)(h.IDLE_LINK_STATUS),w=()=>(0,s.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)},818581,(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(271645);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=a(e,n)),t&&(o.current=a(t,n))},[e,t])}function a(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,"__esMo
1dule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},573668,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"isLocalURL",{enumerable:!0,get:function(){return a}});let n=e.r(718967),o=e.r(652817);function a(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}}},998183,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={assign:function(){return l},searchParamsToUrlQuery:function(){return a},urlQueryToSearchParams:function(){return s}};for(var o in n)Object.defineProperty(r,o,{enumerable:!0,get:n[o]});function a(e){let t={};for(let[r,n]of e.entries()){let e=t[r];void 0===e?t[r]=n:Array.isArray(e)?e.push(n):t[r]=[e,n]}return t}function i(e){return"string"==typeof e?e:("number"!=typeof e||isNaN(e))&&"boolean"!=typeof e?"":String(e)}function s(e){let t=new URLSearchParams;for(let[r,n]of Object.entries(e))if(Array.isArray(n))for(let e of n)t.append(r,i(e));else t.set(r,i(n));return t}function l(e,...t){for(let r of t){for(let t of r.keys())e.delete(t);for(let[t,n]of r.entries())e.append(t,n)}return e}},195057,(e,t,r)=>{"use strict";e.i(247167),Object.defineProperty(r,"__esModule",{value:!0});var n={formatUrl:function(){return s},formatWithValidation:function(){return p},urlObjectKeys:function(){return l}};for(var o in n)Object.defineProperty(r,o,{enumerable:!0,get:n[o]});let a=e.r(190809)._(e.r(998183)),i=/https?|ftp|gopher|file/;function s(e){let{auth:t,hostname:r}=e,n=e.protocol||"",o=e.pathname||"",s=e.hash||"",l=e.query||"",p=!1;t=t?encodeURIComponent(t).replace(/%3A/i,":")+"@":"",e.host?p=t+e.host:r&&(p=t+(~r.indexOf(":")?`[${r}]`:r),e.port&&(p+=":"+e.port)),l&&"object"==typeof l&&(l=String(a.urlQueryToSearchParams(l)));let c=e.search||l&&`?${l}`||"";return n&&!n.endsWith(":")&&(n+=":"),e.slashes||(!n||i.test(n))&&!1!==p?(p="//"+(p||""),o&&"/"!==o[0]&&(o="/"+o)):p||(p=""),s&&"#"!==s[0]&&(s="#"+s),c&&"?"!==c[0]&&(c="?"+c),o=o.replace(/[?#]/g,encodeURIComponent),c=c.replace("#","%23"),`${n}${p}${o}${c}${s}`}let l=["auth","hash","host","hostname","href","path","pathname","port","protocol","query","search","slashes"];function p(e){return s(e)}},718967,(e,t,r)=>{"use strict";e.i(247167),Object.defineProperty(r,"__esModule",{value:!0});var n={DecodeError:function(){return x},MiddlewareNotFoundError:function(){return y},MissingStaticPage:function(){return v},NormalizeError:function(){return b},PageNotFoundError:function(){return w},SP:function(){return f},ST:function(){return m},WEB_VITALS:function(){return a},execOnce:function(){return i},getDisplayName:function(){return d},getLocationOrigin:function(){return p},getURL:function(){return c},isAbsoluteUrl:function(){return l},isResSent:function(){return u},loadGetInitialProps:function(){return h},normalizeRepeatedSlashes:function(){return g},stringifyError:function(){return j}};for(var o in n)Object.defineProperty(r,o,{enumerable:!0,get:n[o]});let a=["CLS","FCP","FID","INP","LCP","TTFB"];function i(e){let t,r=!1;return(...n)=>(r||(r=!0,t=e(...n)),t)}let s=/^[a-zA-Z][a-zA-Z\d+\-.]*?:/,l=e=>{let t=e.charCodeAt(0);return!!(t>=65&&t<=90||t>=97&&t<=122)&&s.test(e)};function p(){let{protocol:e,hostname:t,port:r}=window.location;return`${e}//${t}${r?":"+r:""}`}function c(){let{href:e}=window.location,t=p();return e.substring(t.length)}function d(e){return"string"==typeof e?e:e.displayName||e.name||"Unknown"}function u(e){return e.finished||e.headersSent}function g(e){let t=e.split("?");return t[0].replace(/\\/g,"/").replace(/\/\/+/g,"/")+(t[1]?`?${t.slice(1).join("?")}`:"")}async function h(e,t){let r=t.res||t.ctx&&t.ctx.res;if(!e.getInitialProps)return t.ctx&&t.Component?{pageProps:await h(t.Component,t.ctx)}:{};let n=await e.getInitialProps(t);if(r&&u(r))return n;if(!n)throw Object.defineProperty(Error(`"${d(e)}.getInitialProps()" should resolve to an object. But found "${n}" instead.`),"__NEXT_ERROR_CODE",{value:"E1025",enumerable:!1,configurable:!0});return n}let f="u">typeof performance,m=f&&["mark","measure","getEntriesByName"].every(e=>"function"==typeof performance[e]);
1class x extends Error{}class b extends Error{}class w extends Error{constructor(e){super(),this.code="ENOENT",this.name="PageNotFoundError",this.message=`Cannot find module for page: ${e}`}}class v extends Error{constructor(e,t){super(),this.message=`Failed to load static file for page: ${e} ${t}`}}class y extends Error{constructor(){super(),this.code="ENOENT",this.message="Cannot find the middleware module"}}function j(e){return JSON.stringify({message:e.message,stack:e.stack})}},56688,e=>{"use strict";e.i(247167);var t=e.i(843476),r=e.i(500932),n=e.i(271645);e.i(785269);var o=e.i(322831),a=e.i(618566),i=e.i(522016),s=e.i(13080),l=e.i(209165),p=e.i(452726);let c={login:"/login",signup:"/signup",reset:"/forgot-password","set-password":"/reset-password"},d=e=>/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e.trim()),u=`
2.plog{
3  --material-base:#f3f1ee;
4  --material-light:#fffffd;
5  --white:#fffffd;
6  --text-primary:#172126;
7  --text-secondary:#484e52;
8  --text-muted:#969794;
9  --accent:#006f9c;
10  --accent-hover:#00638c;
11  --accent-active:#00587c;
12  --accent-soft:#d4e0e5;
13  --surface-hover:#eeede9;
14  --border:#dcdcd7;
15  --danger:#b74747;
16  --success:#36826c;
17  --shadow-raised:0 2px 2px rgb(61 55 45 / 18%), 3px 5px 9px rgb(97 91 81 / 13%), inset 0 1px 1px var(--white), inset 0 -1px 1px #dbd8d1;
18  --shadow-inset:inset 1px 2px 3px rgb(104 99 89 / 20%), inset 3px 5px 7px rgb(104 99 89 / 8%), inset -1px -1px 2px var(--white);
19  --shadow-extruded:1px 1px 0 #e3e0da, 3px 3px 0 #d3cfc7, 6px 8px 11px rgb(87 83 75 / 23%), inset 2px 2px 4px rgb(255 255 253 / 72%), inset -2px -2px 4px rgb(97 91 81 / 10%);
20  --shadow-pressed:1px 1px 0 #d1cdc5, 2px 3px 5px rgb(87 83 75 / 13%), inset 3px 4px 7px rgb(104 99 89 / 20%), inset -2px -2px 4px rgb(255 255 253 / 55%);
21  --shadow-inset-soft:inset 3px 4px 7px rgb(104 99 89 / 22%), inset 6px 8px 14px rgb(104 99 89 / 8%), inset -3px -3px 7px rgb(255 255 253 / 78%);
22  --focus-ring:0 0 0 3px rgb(0 111 156 / 22%);
23  color-scheme:light;
24  /* The handoff stack minus the two families this app happens to ship as
25     webfonts — "Noto Sans KR" (next/font) and "Pretendard" (the jsDelivr
26     @import at the top of globals.css). The delivered page has no webfonts at
27     all, so naming either here paints a true variable 790 weight: heavier and
28     ~8% wider than the design. What is left resolves to the same local face
29     the handoff resolves to (Apple SD Gothic Neo on macOS, Malgun Gothic on
30     Windows). Do not "restore" Noto/Pretendard or swap in --font-cjk. */
31  font-family:"Segoe UI", "Malgun Gothic", "Apple SD Gothic Neo", sans-serif;
32  font-synthesis:none;
33  /* Tailwind preflight puts line-height:1.5 on <html> and it inherits into
34     every unstyled run here; the handoff has no such global, so its UI text
35     boxes are the initial normal (~1.2). Without this the Google label, divider, prompt
36     row and links each render 3px taller than the delivered design. The rules
37     that do set a line-height (h1, .description, .field-error) still win. */
38  line-height:normal;
39  position:relative;
40  min-width:320px;
41  min-height:100svh;
42  color:var(--text-primary);
43  background:var(--material-base);
44  -webkit-font-smoothing:antialiased;
45}
46/* base.css sets font-family on :lang(ko) / :lang(ja) themselves, so every
47   element in here matches it directly and inherits nothing from .plog. Repeat
48   the stack at higher specificity or the CJK screens silently switch face. */
49.plog :lang(ko),.plog :lang(ja){font-family:inherit}
50.plog *{box-sizing:border-box}
51.plog button,.plog input{font:inherit}
52.plog button{color:inherit}
53
54.plog .skip-link{
55  position:fixed;
56  top:12px;
57  left:12px;
58  z-index:10;
59  padding:10px 14px;
60  color:var(--white);
61  background:var(--accent);
62  border-radius:8px;
63  transform:translateY(-150%);
64  transition:transform 160ms ease;
65}
66.plog .skip-link:focus{transform:translateY(0)}
67
68.plog .site-header{
69  position:fixed;
70  inset:0 0 auto;
71  z-index:3;
72  display:flex;
73  align-items:center;
74  justify-content:space-between;
75  height:44px;
76  padding:0 16px 0 12px;
77  background:var(--material-base);
78  pointer-events:none;
79}
80
81.plog .brand{
82  position:static;
83  display:flex;
84  align-items:center;
85  width:74px;
86  height:25px;
87  margin:0;
88  text-decoration:none;
89  line-height:1;
90  pointer-events:auto;
91}
92.plog .brand img{display:block;width:74px;height:auto;max-width:100%;object-fit:contain}
93
94.plog .language-switcher{
95  position:absolute;
96  top:6px;
97  right:16px;
98  display:grid;
99  grid-template-columns:repeat(3, 32px);
100  gap:0;
101  pointer-events:auto;
102}
103.plog .language-option{
104  display:inline-flex;
105  align-items:center;
106  justify-content:center;
107  width:32px;
108  height:32px;
109  padding:0;
110  border:0;
111  border-radius:7px;
112  color:var(--text-muted);
113  background:transparent;
114  cursor:pointer;
115  font-size:11px;
116  font-weight:680;
117  transition:background-color 130ms ease, color 130ms ease, transform 100ms ease;
118}
119.plog .language-option:hover{color:var(--text-primary)}
120.plog .language-option.is-active{color:var(--accent)}
121.plog .language-option:active{color:var(--accent-active);transform:translateY(1px)}
122
123.plog .page-shell{
124  display:grid;
125  place-items:center;
126  min-height:100svh;
127  padding:94px 24px 48px;
128}
129
130.plog .login-panel{
131  width:min(100%, 340px);
132  text-align:center;
133  animation:plog-panel-enter 500ms cubic-bezier(.2,.8,.2,1) both;
134}
135
136.plog .intro{
137  width:min(760px, calc(100vw - 48px));
138  margin:0 0 28px 50%;
139  transform:translateX(-50%);
140}
141.plog .intro h1{
142  margin:0;
143  font-size:clamp(48px, 3.65vw, 56px);
144  font-weight:790;
145  letter-spacing:-2px;
146  line-height:1.18;
147  text-wrap:balance;
148}
149.plog .intro h1 span{display:block;white-space:nowrap}
150
151.plog .description{
152  margin:14px auto 0;
153  color:var(--text-secondary);
154  font-size:16px;
155  font-weight:450;
156  letter-spacing:-0.3px;
157  line-height:1.55;
158}
159
160html[lang^="en"] .plog .intro h1{
161  font-size:clamp(46px, 3.5vw, 54px);
162  letter-spacing:-1.5px;
163  line-height:clamp(56.64px, 4.307vw, 66.08px);
164}
165html[lang^="en"] .plog .description{letter-spacing:-0.15px}
166html[lang^="ja"] .plog .intro h1{
167  font-size:clamp(44px, 3.35vw, 52px);
168  letter-spacing:-1.75px;
169  line-height:1.22;
170}
171html[lang^="ja"] .plog .description{letter-spacing:-0.35px;white-space:nowrap}
172
173.plog .button{
174  position:relative;
175  display:flex;
176  align-items:center;
177  justify-content:center;
178  width:100%;
179  height:48px;
180  border-radius:10px;
181  cursor:pointer;
182  font-size:15px;
183  font-weight:680;
184  transition:transform 100ms ease, background-color 130ms ease, color 130ms ease, opacity 130ms ease;
185  transform:translate(0, 0);
186}
187.plog .button:active:not(:disabled){transform:translateY(1px) scale(.995)}
188
189.plog .google-button{
190  gap:10px;
191  border:0;
192  background:var(--white);
193  box-shadow:0 1px 2px rgb(61 55 45 / 14%);
194}
195.plog .google-button:hover{background:#f8f8f6}
196.plog .google-button:active:not(:disabled){background:#efeeeb;transform:translateY(1px) scale(.995)}
197
198.plog .divider{
199  display:grid;
200  grid-template-columns:1fr auto 1fr;
201  align-items:center;
202  gap:13px;
203  margin:21px 0 18px;
204  color:var(--text-muted);
205}
206.plog .divider span{height:1px;background:var(--border)}
207.plog .divider p{margin:0;font-size:13px;font-weight:500;white-space:nowrap}
208
209.plog form{text-align:left}
210.plog .field-group{margin-bottom:12px}
211
212.plog input{
213  width:100%;
214  height:48px;
215  padding:0 16px;
216  border:0;
217  border-radius:10px;
218  outline:none;
219  color:var(--text-primary);
220  background:var(--material-base);
221  box-shadow:var(--shadow-inset-soft);
222  font-size:15px;
223  transition:border-color 130ms ease, box-shadow 130ms ease, background-color 130ms ease;
224}
225.plog input::placeholder{color:#9a9b98;transition:opacity 100ms ease}
226.plog input:hover{background:#f1efeb}
227.plog input:focus{background:#f7f6f3;box-shadow:var(--shadow-inset-soft)}
228.plog input:focus::placeholder{opacity:0}
229.plog input[aria-invalid="true"]{box-shadow:var(--shadow-inset-soft), 0 0 0 3px rgb(163 60 60 / 13%)}
230.plog input:disabled{opacity:.7;cursor:not-allowed}
231/* The palette-os theme styles every focused input app-wide with !important
232   (2px accent outline, box-shadow:none). Inside the auth surface the handoff's
233   own inset-material focus has to answer in kind. */
234.plog #login-form input:focus{outline:none !important;box-shadow:var(--shadow-inset-soft) !important}
235.plog #login-form input[aria-invalid="true"],.plog #login-form input[aria-invalid="true"]:focus{
236  outline:none !important;
237  box-shadow:var(--shadow-inset-soft), 0 0 0 3px rgb(163 60 60 / 13%) !important;
238}
239
240.plog .text-button,.plog .signup-link{
241  padding:0;
242  border:0;
243  background:transparent;
244  cursor:pointer;
245  text-decoration:underline;
246  text-decoration-thickness:1px;
247  text-underline-offset:3px;
248}
249.plog .text-button{color:var(--text-secondary);font-size:12px;font-weight:560}
250.plog .text-button:hover,.plog .signup-link:hover{color:var(--accent-hover)}
251
252.plog .password-control{position:relative}
253.plog .password-control input{padding-right:46px}
254.plog .reveal-button{
255  position:absolute;
256  top:6px;
257  right:7px;
258  display:grid;
259  place-items:center;
260  width:36px;
261  height:36px;
262  padding:0;
263  border:0;
264  border-radius:8px;
265  color:var(--text-secondary);
266  background:transparent;
267  cursor:pointer;
268}
269.plog .reveal-button svg{fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
270.plog .eye-open{display:none}
271.plog .reveal-button[aria-pressed="true"] .eye-open{display:block}
272.plog .reveal-button[aria-pressed="true"] .eye-closed{display:none}
273
274.plog .field-error{
275  min-height:0;
276  margin:0;
277  color:var(--danger);
278  font-size:12px;
279  font-weight:520;
280  line-height:1.4;
281}
282.plog .field-error:not(:empty){margin-top:6px}
283
284.plog .primary-button{
285  gap:9px;
286  margin-top:16px;
287  border:0;
288  color:var(--white);
289  background:var(--accent);
290  box-shadow:0 1px 2px rgb(0 71 100 / 20%);
291}
292.plog .primary-button:hover{background:var(--accent-hover)}
293.plog .primary-button:active:not(:disabled){background:var(--accent-active);transform:translateY(1px) scale(.995)}
294.plog .primary-button .arrow{flex:none;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;transition:transform 130ms ease}
295.plog .primary-button.arrow-fixed .arrow{position:absolute;right:calc(50% - 43px)}
296.plog .primary-button:hover .arrow{transform:translateX(2px)}
297.plog .primary-button.is-loading .arrow,.plog .primary-button.is-loading .button-label{opacity:0}
297
298.plog .primary-button:disabled,.plog .google-button:disabled{cursor:not-allowed;opacity:.58;transform:none}
299
300.plog .spinner{
301  position:absolute;
302  display:none;
303  width:19px;
304  height:19px;
305  border:2px solid rgb(255 255 255 / 38%);
306  border-top-color:var(--white);
307  border-radius:50%;
308  animation:plog-spin 650ms linear infinite;
309}
310.plog .primary-button.is-loading .spinner{display:block}
311
312.plog .status-message{margin-top:10px;text-align:center;color:var(--success);font-size:13px;font-weight:570}
313.plog .status-message.is-error{color:var(--danger)}
314
315.plog .signup-prompt{margin:21px 0 0;color:var(--text-secondary);font-size:14px}
316html[lang^="ja"] .plog .signup-prompt{white-space:nowrap}
317.plog .signup-link{margin-left:3px;color:var(--accent);font-weight:740}
318.plog .forgot-link{
319  display:inline-block;
320  margin-top:11px;
321  color:var(--text-muted);
322  font-size:12px;
323  font-weight:540;
324}
325
326.plog .toast{
327  position:fixed;
328  left:50%;
329  bottom:24px;
330  z-index:5;
331  max-width:min(90vw, 420px);
332  padding:11px 16px;
333  border:0;
334  border-radius:10px;
335  background:var(--material-base);
336  box-shadow:var(--shadow-extruded);
337  color:var(--text-primary);
338  font-size:13px;
339  font-weight:560;
340  opacity:0;
341  transform:translate(-50%, 10px);
342  transition:opacity 180ms ease, transform 180ms ease;
343  pointer-events:none;
344}
345.plog .toast.is-visible{opacity:1;transform:translate(-50%, 0)}
346
347.plog :where(button, a):focus-visible{outline:none;box-shadow:var(--focus-ring)}
348.plog .language-option:focus-visible,.plog .reveal-button:focus-visible{box-shadow:inset 0 0 0 2px var(--accent)}
349
350@keyframes plog-panel-enter{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
351@keyframes plog-spin{to{transform:rotate(360deg)}}
352
353@media (max-width:640px){
354  .plog .site-header{height:44px;padding-right:8px}
355  .plog .language-switcher{top:6px;right:8px}
356  .plog .page-shell{align-items:start;padding:106px 22px 38px}
357  .plog .brand{width:74px}
358  .plog .intro{width:min(366px, calc(100vw - 24px));margin-bottom:25px}
359  .plog .intro h1{font-size:clamp(32px, 9.7vw, 38px);letter-spacing:-1.35px;line-height:1.2}
360  .plog .intro h1 span{white-space:nowrap}
361  .plog .description{margin-top:13px;font-size:15px}
362  html[lang^="en"] .plog .intro{width:min(378px, calc(100vw - 18px))}
363  html[lang^="en"] .plog .intro h1{
364    font-size:clamp(30px, 8.65vw, 34px);
365    letter-spacing:-0.95px;
366    line-height:clamp(38.4px, 11.64vw, 45.6px);
367  }
368  html[lang^="en"] .plog .description{max-width:330px}
369  html[lang^="ja"] .plog .intro{width:min(366px, calc(100vw - 24px))}
370  html[lang^="ja"] .plog .intro h1{font-size:clamp(29px, 8.2vw, 32px);letter-spacing:-1.15px}
371  html[lang^="ja"] .plog .description{max-width:330px;white-space:normal}
372}
373
374/* Handoff defect, reproducible in its own source/index.html: in English the
375   intro box is min(378px, 100vw - 18px) — wider than the 340px panel and wider
376   than the 22px gutters leave — so below ~430px the page scrolls sideways
377   (4px at 390px, 13px at 320px), a WCAG 2.2 AA 1.4.10 reflow failure. The box
378   keeps the gutters here; the 8.65vw slope and 34px cap are the handoff's,
379   untouched, and only the floor drops (it bites below 347px, where 30px would
380   still not fit). */
381@media (max-width:430px){
382  html[lang^="en"] .plog .intro{width:min(378px, calc(100vw - 44px))}
383  html[lang^="en"] .plog .intro h1{font-size:clamp(26px, 8.65vw, 34px)}
384}
385
386@media (max-height:760px) and (min-width:641px){
387  .plog .page-shell{place-items:start center;padding-top:72px}
388  .plog .intro{margin-bottom:18px}
389  .plog .divider{margin-block:16px 14px}
390  .plog .signup-prompt{margin-top:17px}
391  .plog .forgot-link{margin-top:9px}
392}
393
394@media (prefers-reduced-motion:reduce){
395  .plog *,.plog *::before,.plog *::after{
396    scroll-behavior:auto !important;
397    animation-duration:.01ms !important;
398    animation-iteration-count:1 !important;
399    transition-duration:.01ms !important;
400  }
401}
402
403/* Embedded (the guest login modal): the same panel inside a 590px card. The
404   html[lang] prefix out-specifies the per-language h1/description rules above,
405   which would otherwise re-widen the intro past the card. */
406html[lang] .plog.plog-embedded{min-width:0;min-height:0;background:transparent}
407html[lang] .plog.plog-embedded .page-shell{display:block;min-height:0;padding:0}
408html[lang] .plog.plog-embedded .login-panel{width:100%;animation:none}
409html[lang] .plog.plog-embedded .intro{width:auto;margin:0 0 30px;transform:none}
410html[lang] .plog.plog-embedded .intro h1{font-size:40px;letter-spacing:-1.5px;line-height:1.15}
411html[lang] .plog.plog-embedded .description{margin-top:14px;font-size:15px;letter-spacing:-0.15px;white-space:normal}
412@media (max-width:640px){
413  html[lang] .plog.plog-embedded .intro h1{font-size:30px;letter-spacing:-1px;line-height:1.2}
414}
415`,g=()=>{let e,n=(0,r.c)(1);return n[0]===Symbol.for("react.memo_cache_sentinel")?(e=(0,t.jsxs)("svg",{className:"google-mark",
415width:"20",height:"20",viewBox:"0 0 24 24","aria-hidden":"true",children:[(0,t.jsx)("path",{fill:"#4285F4",d:"M21.6 12.23c0-.71-.06-1.39-.18-2.05H12v3.87h5.38a4.6 4.6 0 0 1-2 3.02v2.51h3.24c1.9-1.74 2.98-4.32 2.98-7.35Z"}),(0,t.jsx)("path",{fill:"#34A853",d:"M12 22c2.7 0 4.98-.9 6.63-2.42l-3.24-2.51c-.9.6-2.05.96-3.39.96-2.61 0-4.82-1.76-5.61-4.13H3.04v2.59A10 10 0 0 0 12 22Z"}),(0,t.jsx)("path",{fill:"#FBBC05",d:"M6.39 13.9A6 6 0 0 1 6.08 12c0-.66.11-1.3.31-1.9V7.51H3.04A10 10 0 0 0 2 12c0 1.61.38 3.14 1.04 4.49l3.35-2.59Z"}),(0,t.jsx)("path",{fill:"#EA4335",d:"M12 5.97c1.47 0 2.79.51 3.83 1.5l2.87-2.88A9.64 9.64 0 0 0 12 2a10 10 0 0 0-8.96 5.51l3.35 2.59C7.18 7.73 9.39 5.97 12 5.97Z"})]}),n[0]=e):e=n[0],e},h=()=>{let e,n,o=(0,r.c)(2);return o[0]===Symbol.for("react.memo_cache_sentinel")?(e=(0,t.jsxs)("svg",{className:"eye-open",width:"18",height:"18",viewBox:"0 0 24 24","aria-hidden":"true",children:[(0,t.jsx)("path",{d:"M2.4 12s3.4-5.3 9.6-5.3 9.6 5.3 9.6 5.3-3.4 5.3-9.6 5.3S2.4 12 2.4 12Z"}),(0,t.jsx)("circle",{cx:"12",cy:"12",r:"2.7"})]}),o[0]=e):e=o[0],o[1]===Symbol.for("react.memo_cache_sentinel")?(n=(0,t.jsxs)(t.Fragment,{children:[e,(0,t.jsx)("svg",{className:"eye-closed",width:"18",height:"18",viewBox:"0 0 24 24","aria-hidden":"true",children:(0,t.jsx)("path",{d:"m4 4 16 16M9.9 6.9c.67-.14 1.37-.22 2.1-.22 6.2 0 9.6 5.32 9.6 5.32a17.4 17.4 0 0 1-3.12 3.55M14.12 14.12A3 3 0 0 1 9.88 9.88M6.1 8.05A17.8 17.8 0 0 0 2.4 12s3.4 5.32 9.6 5.32c1.16 0 2.2-.18 3.14-.48"})})]}),o[1]=n):n=o[1],n},f=()=>{let e,n=(0,r.c)(1);return n[0]===Symbol.for("react.memo_cache_sentinel")?(e=(0,t.jsx)("svg",{className:"arrow",width:"20",height:"20",viewBox:"0 0 24 24","aria-hidden":"true",children:(0,t.jsx)("path",{d:"M5 12h13M13 6l6 6-6 6"})}),n[0]=e):e=n[0],e};e.s(["default",0,function({initialMode:e,embedded:r=!1,onDone:m}){let{t:x,i18n:b}=(0,o.useTranslation)("auth"),w=(0,a.useRouter)(),{login:v,signup:y}=(0,s.useAuth)(),j=(0,n.useRef)(null),[k,S]=(0,n.useState)(e),N=(0,n.useRef)(null);(0,n.useLayoutEffect)(()=>{let e=N.current;if(!r||!e)return;let t=()=>{e.style.fontSize="";let t=parseFloat(getComputedStyle(e).fontSize),r=Math.max(...Array.from(e.children,e=>e.scrollWidth)),n=e.clientWidth/r;n<1&&(e.style.fontSize=`${Math.floor(t*n*10)/10}px`)};t();let n=new ResizeObserver(t);return n.observe(e),()=>n.disconnect()},[r,k]);let[P,E]=(0,n.useState)(""),[T,_]=(0,n.useState)(""),[C,L]=(0,n.useState)(""),[O,A]=(0,n.useState)(""),[M,z]=(0,n.useState)({}),[R,I]=(0,n.useState)(null),[$,U]=(0,n.useState)(!1),[F,B]=(0,n.useState)({}),[D,W]=(0,n.useState)(""),[G,K]=(0,n.useState)(null),H=(0,p.normalizeLanguage)(b.language),Y="login"===k,Z="signup"===k;function q(e){z({}),I(null),S(e),r||window.history.pushState(null,"",c[e])}function J(e){z(t=>t[e]?{...t,[e]:""}:t)}function X(e){z(e),requestAnimationFrame(()=>j.current?.querySelector('[aria-invalid="true"]')?.focus())}async function V(e){e.preventDefault(),I(null);let t={};if(Y){if(d(T)||(t.email=x("invalidEmail")),C||(t.password=x("enterPassword")),Object.keys(t).length)return X(t);z({}),U(!0);try{await v(T,C),m?m():w.replace("/general-chat")}catch(e){I({text:e instanceof Error?e.message:x("signInFailed"),error:!0})}finally{U(!1)}return}if(Z){if(P.trim()||(t.name=x("enterName")),d(T)||(t.email=x("invalidEmail")),C.length<8&&(t.password=x("passwordTooShort")),O&&O===C||(t.confirm=x("passwordsDoNotMatch")),Object.keys(t).length)return X(t);z({}),U(!0);try{await y(P,T,C),m?m():w.push("/general-chat")}catch(e){I({text:e instanceof Error?e.message:x("signupFailed"),error:!0})}finally{U(!1)}return}if("reset"===k){if(d(T)||(t.email=x("invalidEmail")),Object.keys(t).length)return X(t);z({}),U(!0);try{await (0,l.apiFetch)("/api/v1/auth/forgot-password",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({email:T})})}catch{}finally{U(!1),I({text:x("resetSentSubtitle")})}return}if(!G)return void I({text:x("resetMissingToken"),error:!0});if(C.length<8&&(t.password=x("passwordTooShort")),O&&O===C||(t.confirm=x("passwordsDoNotMatch")),Object.keys(t).length)return X(t);z({}),U(!0);try{await (0,l.apiFetch)("/api/v1/auth/reset-password",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({token:G,password:C})}),I({text:x("resetSuccessSubtitle")}),setTimeout(()=>window.location.assign("/general-chat"),1200)}catch(t){let e=t?.status;I({text:(t instanceof Error?t.message:"")||(400===e?x("resetLinkInvalid"):x("resetFailed")),error:!0}),U(!1)}}(0,n.useEffect)(()=>
415{if(r)return;let e=x("documentTitle"),t=()=>{document.title!==e&&(document.title=e)};t();let n=new MutationObserver(t);return n.observe(document.head,{childList:!0,subtree:!0,characterData:!0}),()=>n.disconnect()},[x,H,r]),(0,n.useEffect)(()=>{if("set-password"!==k)return;let e=new URLSearchParams(window.location.search).get("token");K(e),e||I({text:x("resetMissingToken"),error:!0})},[k,x]),(0,n.useEffect)(()=>{let e=new URLSearchParams(window.location.search).get("error");e&&W({domain_not_allowed:x("domainNotAllowed"),email_unverified:x("emailUnverified")}[e]??x("signInFailed"))},[x]),(0,n.useEffect)(()=>{if(!D)return;let e=window.setTimeout(()=>W(""),2600);return()=>window.clearTimeout(e)},[D]),(0,n.useEffect)(()=>{if(r)return;let e=()=>{let e;return S((e=window.location.pathname).startsWith("/signup")?"signup":e.startsWith("/forgot-password")?"reset":e.startsWith("/reset-password")?"set-password":"login")};return window.addEventListener("popstate",e),()=>window.removeEventListener("popstate",e)},[r]);let Q=(e,r,n,o,a,i,s,l)=>(0,t.jsxs)("div",{className:"field-group",children:[(0,t.jsx)("input",{id:e,name:e,type:n,value:o,onChange:e=>{a(e.target.value),J(r)},placeholder:i,"aria-label":s,"aria-describedby":`${e}-error`,"aria-invalid":M[r]?"true":void 0,autoComplete:l,inputMode:"email"===n?"email":void 0,disabled:$,required:!0}),(0,t.jsx)("p",{className:"field-error",id:`${e}-error`,role:"alert",children:M[r]||""})]}),ee=(e,r,n,o,a,i,s)=>(0,t.jsxs)("div",{className:"field-group",children:[(0,t.jsxs)("div",{className:"password-control",children:[(0,t.jsx)("input",{id:e,name:e,type:F[e]?"text":"password",value:n,onChange:e=>{o(e.target.value),J(r)},placeholder:a,"aria-label":i,"aria-describedby":`${e}-error`,"aria-invalid":M[r]?"true":void 0,autoComplete:s,minLength:8,disabled:$,required:!0}),(0,t.jsx)("button",{className:"reveal-button",type:"button","aria-pressed":!!F[e],"aria-label":F[e]?x("hidePassword"):x("showPassword"),disabled:$,onClick:()=>{B(t=>({...t,[e]:!t[e]})),document.getElementById(e)?.focus()},children:(0,t.jsx)(h,{})})]}),(0,t.jsx)("p",{className:"field-error",id:`${e}-error`,role:"alert",children:M[r]||""})]}),et=(0,t.jsxs)("button",{className:"button google-button",type:"button",id:"google-button",disabled:$,onClick:()=>{window.location.href="https://api.pltt.ai/api/v1/auth/google"},children:[(0,t.jsx)(g,{}),(0,t.jsx)("span",{children:x("continueWithGoogle")})]}),er=(0,t.jsxs)("div",{className:"divider","aria-hidden":"true",children:[(0,t.jsx)("span",{}),(0,t.jsx)("p",{children:x("orContinueWithEmail")}),(0,t.jsx)("span",{})]}),en=Y?x("signIn"):Z?x("createAccountButton"):"reset"===k?x("sendResetLink"):x("resetPasswordButton"),eo=Y?x("signingIn"):Z?x("creatingAccount"):en,ea=(0,t.jsxs)("button",{className:`button primary-button${Y?" arrow-fixed":""}${$?" is-loading":""}`,type:"submit",id:"submit-button",disabled:$||"set-password"===k&&!G,"aria-label":$?eo:void 0,children:[(0,t.jsx)("span",{className:"button-label",children:en}),(0,t.jsx)("span",{className:"spinner","aria-hidden":"true"}),(0,t.jsx)(f,{})]}),ei=(0,t.jsx)("div",{className:`status-message${R?.error?" is-error":""}`,id:"form-status",role:"status","aria-live":"polite",children:R?.text??""}),es="reset"===k?{line1:x("resetHeadlineLine1"),line2:x("resetHeadlineLine2"),description:x("resetSubtitle")}:"set-password"===k?{line1:x("setPasswordHeadlineLine1"),line2:x("setPasswordHeadlineLine2"),description:x("setNewPasswordSubtitle")}:r?{line1:"The cutting edge of AI,",line2:"curated in one Palette",description:"One subscription. Freedom to explore.",lang:"en"}:{line1:x("headlineLine1"),line2:x("headlineLine2"),description:x("heroDescription")};return(0,t.jsxs)("div",{className:r?"plog plog-embedded":"plog",children:[(0,t.jsx)("style",{children:u}),!r&&(0,t.jsx)("a",{className:"skip-link",href:"#login-form",children:x("skipLink")}),!r&&(0,t.jsxs)("header",{className:"site-header",children:[(0,t.jsx)(i.default,{className:"brand",href:"/","aria-label":x("brandHome"),children:(0,t.jsx)("img",{src:"/themes/palette-os/palette-logo-black.png",alt:"",width:1640,height:297})}),(0,t.jsx)("nav",{className:"language-switcher","aria-label":x("languageSelector"),children:p.SUPPORTED_LANGUAGES.map(e=>(0,t.jsx)("button",{className:`language-option${H===e?" is-active":""}`,type:"button","aria-pressed":H===e,onClick:()=>{(0,p.setManualLanguageOverride)(e),b.changeLanguage(e),window.dispatchEvent(new Event("palette:language-change"))},children:p.LANGUAGE_LABELS[e].short},e))})]}),(0,t.jsx)("main",{className:"page-shell",children:(0,t.jsxs)("section",{className:"login-panel","aria-labelledby":"page-title",children:[(0,t.jsxs)("div",{className:"intro",lang:"lang"in es?es.lang:void 0,children:[(0,t.jsxs)("h1",{id:"page-title",ref:N,children:[(0,t.jsx)("span",{children:es.line1}),(0,t.jsx)("span",{children:es.line2})]}),(0,t.jsx)("p",{className:"description",children:es.description})]}),(Y||Z)&&(0,t.jsxs)(t.Fragment,{children:[et,er]}),(0,t.jsxs)("form",{id:"login-form",ref:j,tabIndex:-1,noValidate:!0,onSubmit:V,children:[Z&&Q("name","name","text",P,E,x("fullNamePlaceholder"),x("fullNameLabel"),"name"),"set-password"!==k&&Q("email","email","email",T,_,x("emailPlaceholder"),x("emailLabel"),"email"),"reset"!==k&&ee("password","password",C,L,"set-password"===k?x("newPasswordPlaceholder"):x("passwordPlaceholder"),"set-password"===k?x("newPasswordLabel"):x("passwordLabel"),Y?"current-password":"new-password"),(Z||"set-password"===k)&&ee("confirm-password","confirm",O,A,x("confirmPasswordPlaceholder"),x("confirmPasswordLabel"),"new-password"),ea,ei]}),Y&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("p",{className:"signup-prompt",children:[(0,t.jsx)("span",{children:x("noAccount")}
415)," ",(0,t.jsx)("button",{className:"signup-link",type:"button",id:"signup-button",onClick:()=>q("signup"),children:x("createOne")})]}),(0,t.jsx)("button",{className:"text-button forgot-link",type:"button",id:"forgot-password",onClick:()=>q("reset"),children:x("forgotPassword")})]}),Z&&(0,t.jsxs)("p",{className:"signup-prompt",children:[(0,t.jsx)("span",{children:x("alreadyHaveAccount")})," ",(0,t.jsx)("button",{className:"signup-link",type:"button",onClick:()=>q("login"),children:x("signInLink")})]}),("reset"===k||"set-password"===k)&&(0,t.jsx)("p",{className:"signup-prompt",children:(0,t.jsx)("button",{className:"signup-link",type:"button",onClick:()=>q("login"),children:x("backToSignIn")})})]})}),(0,t.jsx)("div",{className:`toast${D?" is-visible":""}`,id:"toast",role:"status","aria-live":"polite","aria-atomic":"true",children:D})]})}])}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.