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.