@font-face{font-family:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;font-stretch:75% 100%;src:url(/assets/bricolage-grotesque-vietnamese-standard-normal-Br4FGdAc.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;font-stretch:75% 100%;src:url(/assets/bricolage-grotesque-latin-ext-standard-normal-qp-RdZgh.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;font-stretch:75% 100%;src:url(/assets/bricolage-grotesque-latin-standard-normal-C5Lc8Qmc.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Hanken Grotesk Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(data:font/woff2;base64,d09GMgABAAAAAAaEABMAAAAADFgAAAYdAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGhYbbhwoP0hWQVJpBmA/U1RBVIE4AFwvbBEICoJ8gkMLFAAwhCoBNgIkAyIEIAWGUAdiDAcbvgpRVHJOI/viwCYyfSFrJjFIG8raYpYj9+IeSF0s6zD+Lk/4OGrZHhHV+wvt2ffuWPwlA51lIICIosSVmyOKEs5Uzlx3NKeXIgn1ssCydUybDV0IHga+SszIyfrQe9bLTFNxjayzgs76hNsDoSYtRe32fiJ4gxBjrP8L+w//zzHjv7Yqyr9o2vOBDXhCo2jMtr4uwAK/gV1U0PxAq/EAD+yW9EoKOL1KLw8rHrFgCSgRTQRzBzpeXVhweEDlyfY8gIoOa2CQJzrTAHIIoitTMVV2dyFwpJ2iAEQTpSkhPitxD3YwuZHEagTcAhyKAcBmUyPdhTovJThOw6HYiaF2M/J7erdi2OUutor6ES6Ac88AvfZvKpb6fJoArohb524042j6Jij36NI7P8Pb7s721naN9gcTtcjXQP4l+8BKEzFVGMxxoHqlq8Ul4LGneFJBDFaOdKpLPcg8P14YSDwIcn75hdlyJLTBlZ4voL6tT46yC/njunXqpJ0/bSvmrH1o3kRlwZ+j0DBogkF3KbDRVBlbOc+fY5HVXwPoT9hfekPnyZMaEmenYLMSg5npqegFOsgXsBv1IoF9aIVfSCNHkk6+gIzILsiYuhWQCfUtZEpbkRntQxBZgw7MwFbMcRvwJrAnBlDqs7isLtL7pO84Xru1i7ah7tckH1Wreqq6K9u0amxU1bcff/s2Y1ni3rh2I8zHzqkm3PGvv3mzC6NDBz/UcOBIg+nm88rxN8MbdtypvHUL5o1c2zG0urYpRmW+VHZdiba6GXN/3v0B3i3nt4RBsbfAu8ftLqRcTIlZ4VYheFTAS5nXLS65VZrbuW3daF2Ze1ChyGXWZN6u9nUuH1LfyTERifZXEpIueMe28vF8FOoTnsONzw+1djo9P71lZGx1vM8mH/BhvSa2HDsRZ1+Ul+RmpnPOIaEuwWnZZdkgQWAAyCDDZ1wk+0sh7wseAAwA6UlHxbftCgYAAwKAgwIAEA7ACfHIRbV7J6dwF/ZzcRRmAjXUYKAGWAlDCCFmKnH+LJEQfHKEmVrfmKwSEab36AcubXQBoDYJV/aRV+funFD8wAXLSLYbwr9+DR+h/qZIKCfeqRG5ghHpdY0zcV2nuz5iJMhAFjaTDwOcoyKGG9JHrCfdp4cC+kCvUrxc7+bliIMiHj95sPIbUeWZEP/HLnN2tlr9EBeRiktHuWvErx98fRz1MuEvHO3FDRgtsSzL/P0hsDLK2n5/uHMOjvTst0HD6t+80ZN798j7j//kjqHxIOZDFPR/FxurFD6/HxGbB799RPHLx5F89MoBOub9jVuOWtmPH3o9H3r26DIuff+LqPLwff/xryDRmiAYmjxiK0GwS9XU+k8QpUrHsCTs4qH89Fv44ubWbQmOE51M7J8Pt8+h+NKt3zZpa2L9zZqcRlyEc4MaNGdfjQCxgIygn78ne4yAzcLWA3zAJ6RRGbijvHr1W+XN8ywrG0EoZSySb0/A9KsllI7Q/Pq8hLu76tfTy5cF4X8bQxTtYp2vr6/+1oI4AhgAlNYFryt62VaX9ktO6VsAeDLeWx6fff4vdV1ts7N6+gw9GCsQnqPB0QUttB9nEc7Aaf4XM0NQ90VJ+HV1rG04znGCmXcpPCA9+nxdMPgPlT7Dz83NMfZuMJaNeRqbc+tjd2QER/b0B44d7nv5Rif7VC8svYkx9SKWwb3YzN2M3cY8jSNLl+PYZqfjxNTxOLXVCmfmduDc0ty1kLbjeiGfIrDFJXWPTTMD5TKupR8cpZgJeXTofId8NoUj6E8XfAc2k4WPdbCberDYAp8Q7L5dUo8wE8cs9QINZYvwXKzvBS4v/n+fQZkGrrFysKEIuFBgjQpxiHH1XA+ZBI+C+oAoxhYKECc42rGOc8L4mYhsiThGfFjOcKmFubPpDgwnY1918Fwo8ouenDJxvGP96HFWJ28hiOy251oKjkcbGz2POMme8CTMThx6wqOPsFtPI6j6HhDyDTxFQYnL88FcXGAGHl3ZuueRbEuxbK6Hc84ZDvRrREtLzyjj8Xkd/uShR1b0sYd8Nh8/c8znxCnadxQcf2nFVWIyw1g+4StXav9j75s+CQAA) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Hanken Grotesk Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/hanken-grotesk-vietnamese-wght-normal-CHiFlh_0.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Hanken Grotesk Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/hanken-grotesk-latin-ext-wght-normal-Dg-wlmqe.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Hanken Grotesk Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/hanken-grotesk-latin-wght-normal-CaVRRdDk.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Space Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/space-mono-vietnamese-400-normal-BNOj0Qhp.woff2) format("woff2"),url(/assets/space-mono-vietnamese-400-normal-B0PMp_xB.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Space Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/space-mono-latin-ext-400-normal-DTLbW2xa.woff2) format("woff2"),url(/assets/space-mono-latin-ext-400-normal-D4cJI_B-.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Space Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/space-mono-latin-400-normal-Rg4St2Dn.woff2) format("woff2"),url(/assets/space-mono-latin-400-normal-_3DlpgIW.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Space Mono;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/space-mono-vietnamese-700-normal-DWQgDHuA.woff2) format("woff2"),url(/assets/space-mono-vietnamese-700-normal-D-KrLuLr.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Space Mono;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/space-mono-latin-ext-700-normal-B2s3bDs2.woff2) format("woff2"),url(/assets/space-mono-latin-ext-700-normal-B_E7P90g.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Space Mono;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/space-mono-latin-700-normal-mWgeinG7.woff2) format("woff2"),url(/assets/space-mono-latin-700-normal-D7A851RN.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}.app-banner-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:99999;background:#000000b3;display:flex;align-items:center;justify-content:center;padding:24px;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.app-banner-card{background:#fff;border-radius:20px;padding:48px 32px;max-width:400px;width:100%;text-align:center;display:flex;flex-direction:column;align-items:center;gap:16px;box-shadow:0 24px 64px #0000004d}.app-banner-logo{width:80px;height:80px;border-radius:16px;object-fit:cover}.app-banner-title{font-size:32px;font-weight:800;margin:0;background:linear-gradient(135deg,#667eea,#764ba2);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.app-banner-subtitle{font-size:16px;color:#555;margin:0 0 8px;line-height:1.5}.app-banner-download{width:100%;padding:14px 24px;border:none;border-radius:12px;background:#000;color:#fff;font-size:16px;font-weight:600;cursor:pointer;transition:opacity .2s}.app-banner-download:hover{opacity:.85}.app-banner-close{background:none;border:none;color:#888;font-size:14px;cursor:pointer;padding:8px;transition:color .2s}.app-banner-close:hover{color:#333}.has-site-promo .nav-wrap{top:var(--site-promo-h, 0px);transition:background .22s var(--spring-smooth),top .2s ease}.has-site-promo .nav-mobile{top:calc(68px + var(--site-promo-h, 0px))}html.has-site-promo{scroll-padding-top:calc(var(--site-promo-h, 0px) + 96px)}.site-promo-banner-inner{display:flex;align-items:center;gap:.6rem .9rem;flex-wrap:wrap}.site-promo-banner--announcement{position:sticky;top:0;z-index:1001;background:linear-gradient(100deg,#7c2d12,#c45c26 45%,#e8a317);color:#fff}.site-promo-banner--announcement .site-promo-banner-inner{max-width:72rem;margin:0 auto;padding:.55rem 1rem;justify-content:center;text-align:center}.site-promo-banner--announcement .site-promo-banner-badge{font-size:.75rem;font-weight:800;letter-spacing:.05em;text-transform:uppercase;background:#ffffff2e;border:1px solid rgb(255 255 255 / .35);border-radius:999px;padding:.2rem .6rem;white-space:nowrap}.site-promo-banner--announcement .site-promo-banner-text{display:inline-flex;align-items:baseline;gap:.45rem;flex-wrap:wrap;justify-content:center;font-size:.875rem}.site-promo-banner--announcement .site-promo-banner-title{font-weight:800}.site-promo-banner--announcement .site-promo-banner-desc{opacity:.95}.site-promo-banner--announcement .site-promo-banner-code{font-family:ui-monospace,monospace;font-size:.75rem;font-weight:700;letter-spacing:.06em;background:#00000040;border:1px dashed rgb(255 255 255 / .6);border-radius:.4rem;padding:.2rem .5rem}.site-promo-banner--announcement .site-promo-banner-auto{font-size:.75rem;font-weight:800;letter-spacing:.05em;text-transform:uppercase;background:#00000040;border:1px solid rgb(255 255 255 / .6);border-radius:999px;padding:.2rem .6rem;white-space:nowrap}.site-promo-banner--announcement .site-promo-banner-cta{display:inline-flex;align-items:center;padding:.4rem 1rem;border-radius:999px;font-size:.8125rem;font-weight:800;text-decoration:none;color:#7c2d12;background:#fff;transition:transform .15s ease,filter .15s ease;white-space:nowrap}.site-promo-banner--announcement .site-promo-banner-cta:hover{transform:translateY(-1px);filter:brightness(.96);color:#7c2d12}.site-promo-banner--announcement .site-promo-banner-dismiss{border:none;background:transparent;color:#fffc;font-size:1.2rem;line-height:1;cursor:pointer;padding:.15rem .35rem;border-radius:.35rem}.site-promo-banner--announcement .site-promo-banner-dismiss:hover{background:#ffffff2e;color:#fff}.site-promo-banner--card{margin-bottom:var(--space-5, 1.25rem);border-radius:var(--r-md, 14px);border:1px solid color-mix(in oklch,var(--color-amber, #e8a317) 40%,transparent);background:linear-gradient(125deg,color-mix(in oklch,var(--color-amber, #e8a317) 16%,transparent),color-mix(in oklch,var(--color-terracotta, #c45c26) 12%,transparent) 60%,color-mix(in oklch,var(--color-teal, #2a9d8f) 8%,transparent));animation:sitePromoSlide .35s cubic-bezier(.16,1,.3,1)}@keyframes sitePromoSlide{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.site-promo-banner--card .site-promo-banner-inner{padding:.85rem 1rem}.site-promo-banner--card .site-promo-banner-badge{flex-shrink:0;font-size:.6875rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--color-terracotta, #c45c26);background:color-mix(in oklch,var(--color-terracotta, #c45c26) 12%,transparent);border:1px solid color-mix(in oklch,var(--color-terracotta, #c45c26) 22%,transparent);border-radius:999px;padding:.25rem .55rem;white-space:nowrap}.site-promo-banner--card .site-promo-banner-text{flex:1 1 12rem;min-width:0;display:flex;flex-direction:column;gap:.15rem}.site-promo-banner--card .site-promo-banner-title{font-size:.9375rem;letter-spacing:-.01em;color:var(--ink, #18181b)}.site-promo-banner--card .site-promo-banner-desc{font-size:.8125rem;line-height:1.4;color:var(--ink-muted, #52525b)}.site-promo-banner--card .site-promo-banner-code{flex-shrink:0;font-family:ui-monospace,monospace;font-size:.75rem;font-weight:700;letter-spacing:.06em;color:var(--ink, #18181b);background:color-mix(in oklch,var(--ink, #000) 5%,transparent);border:1px dashed color-mix(in oklch,var(--ink, #000) 25%,transparent);border-radius:.4rem;padding:.25rem .55rem}.site-promo-banner--card .site-promo-banner-auto{flex-shrink:0;font-size:.6875rem;font-weight:800;letter-spacing:.05em;text-transform:uppercase;color:#1a7f37;background:color-mix(in oklch,#1a7f37 10%,transparent);border:1px solid color-mix(in oklch,#1a7f37 25%,transparent);border-radius:999px;padding:.25rem .55rem;white-space:nowrap}.site-promo-banner--card .site-promo-banner-cta{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;padding:.55rem 1.15rem;border-radius:999px;font-size:.8125rem;font-weight:700;text-decoration:none;color:#fff;background:var(--color-terracotta, #c45c26);transition:transform .15s ease,filter .15s ease}.site-promo-banner--card .site-promo-banner-cta:hover{transform:translateY(-1px);filter:brightness(1.06);color:#fff}.site-promo-banner--card .site-promo-banner-dismiss{flex-shrink:0;width:1.75rem;height:1.75rem;border:none;border-radius:.4rem;background:transparent;color:var(--ink-muted, #71717a);font-size:1.25rem;line-height:1;cursor:pointer}.site-promo-banner--card .site-promo-banner-dismiss:hover{background:color-mix(in oklch,var(--ink, #000) 6%,transparent);color:var(--ink, #18181b)}@media(max-width:560px){.site-promo-banner--card{position:relative}.site-promo-banner--card .site-promo-banner-cta{width:100%}.site-promo-banner--card .site-promo-banner-dismiss{position:absolute;top:.5rem;right:.5rem}}.toast-stack{position:fixed;bottom:1.5rem;right:1.5rem;z-index:10000;display:flex;flex-direction:column-reverse;gap:.5rem;pointer-events:none}.toast{display:flex;align-items:center;gap:.625rem;padding:.75rem 1.25rem;border-radius:var(--r-sm);background:var(--paper-warm);border:1px solid var(--taupe-line);box-shadow:var(--shadow-lg);color:var(--ink);font-size:var(--text-sm);font-weight:500;cursor:pointer;pointer-events:auto;animation:toast-in .3s var(--spring-smooth) forwards;max-width:360px}.toast-icon{display:flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:50%;font-size:.7rem;font-weight:700;flex-shrink:0}.toast--success .toast-icon{background:color-mix(in oklch,var(--color-success) 15%,transparent);color:var(--color-success)}.toast--error .toast-icon{background:color-mix(in oklch,var(--color-error) 15%,transparent);color:var(--color-error)}.toast--info .toast-icon{background:color-mix(in oklch,var(--color-primary) 15%,transparent);color:var(--color-primary)}.toast-message{line-height:1.4}@keyframes toast-in{0%{opacity:0;transform:translateY(12px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}[data-theme=dark] .toast{background:#1b1510;border-color:var(--taupe-line);color:var(--ink)}@media(max-width:640px){.toast-stack{left:1rem;right:1rem;bottom:1rem}.toast{max-width:100%}}.legal-page{max-width:900px;margin:0 auto;padding:8rem var(--space-8) var(--space-12);font-family:var(--font-sans)}.legal-header{text-align:center;margin-bottom:var(--space-12);padding-bottom:var(--space-8);border-bottom:1px solid var(--taupe-line)}.legal-header h1{font-size:var(--text-3xl);font-weight:700;margin-bottom:var(--space-2);color:var(--ink);letter-spacing:-.02em;line-height:1.15}.legal-header .last-updated{font-size:var(--text-sm);color:var(--ink-muted)}.legal-section{margin-bottom:var(--space-10)}.legal-section h2{font-size:var(--text-xl);font-weight:600;margin-bottom:var(--space-4);color:var(--color-primary);padding-bottom:var(--space-2);border-bottom:1px solid var(--taupe-line)}.legal-section p{font-size:var(--text-base);line-height:1.75;color:var(--ink-muted);margin-bottom:var(--space-4)}.legal-section ul,.legal-section ol{margin-left:var(--space-6);margin-bottom:var(--space-4);list-style:disc}.legal-section ol{list-style:decimal}.legal-section li{font-size:var(--text-base);line-height:1.75;color:var(--ink-muted);margin-bottom:var(--space-2)}.legal-section a{color:var(--color-primary);text-decoration:underline;text-underline-offset:2px}.legal-highlight{background:var(--color-terracotta-ghost);border-left:4px solid var(--color-primary);padding:var(--space-4) var(--space-6);border-radius:0 var(--r-xs) var(--r-xs) 0;margin:var(--space-6) 0}.legal-highlight p{margin:0;font-weight:500;color:var(--ink)}.legal-footer{margin-top:var(--space-16);padding-top:var(--space-8);border-top:1px solid var(--taupe-line);text-align:center;color:var(--ink-muted);font-size:var(--text-sm)}.contact-page-wrapper{position:relative;background:var(--bg-base, var(--paper));overflow:hidden;min-height:80vh;padding-top:6rem}.bg-accent-blob{position:absolute;width:400px;height:400px;border-radius:50%;filter:blur(100px);opacity:.15;z-index:1;pointer-events:none}.blob-1{top:-10%;left:-10%;background:var(--color-secondary, var(--amber))}.blob-2{bottom:-10%;right:-10%;background:#ec4899}.contact-container{max-width:1200px;margin:0 auto;padding:4rem 2rem;position:relative;z-index:2}.contact-header{text-align:center;margin-bottom:4rem}.contact-title{font-size:3.5rem;font-weight:900;margin-bottom:1.5rem;letter-spacing:-.02em;color:var(--ink)}.contact-subtitle{font-size:1.25rem;max-width:600px;margin:0 auto;opacity:.8;color:var(--ink-muted)}.text-gradient{background:linear-gradient(135deg,var(--color-primary) 0%,var(--color-secondary, var(--amber)) 100%);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}.contact-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:2rem;max-width:900px;margin:0 auto}.contact-card{background:var(--paper);border:1px solid var(--taupe-line);border-radius:32px;transition:all .4s cubic-bezier(.2,.8,.2,1);box-shadow:var(--shadow-soft, 0 4px 12px rgba(0, 0, 0, .05));text-decoration:none;color:inherit;overflow:hidden}.contact-card:hover{transform:translateY(-8px) scale(1.02);border-color:var(--color-secondary, var(--amber));box-shadow:0 20px 40px #0000001a}.card-inner{padding:40px;display:flex;flex-direction:column;align-items:center;text-align:center;position:relative;z-index:2}.icon-box{width:72px;height:72px;border-radius:20px;display:flex;align-items:center;justify-content:center;margin-bottom:24px;transition:transform .3s ease}.contact-card:hover .icon-box{transform:scale(1.1) rotate(5deg)}.bg-pink{background:#ec48991a;color:#ec4899}.bg-purple{background:#a855f71a;color:#a855f7}.bg-blue{background:#3b82f61a;color:#3b82f6}.bg-green{background:#22c55e1a;color:#22c55e}.text-pink{color:#ec4899}.text-purple{color:#a855f7}.text-blue{color:#3b82f6}.community-page-wrapper{position:relative;background:var(--bg-base, var(--paper));overflow:hidden;min-height:80vh;padding-top:6rem}.community-container{max-width:1200px;margin:0 auto;padding:4rem 2rem;position:relative;z-index:2}.community-header{text-align:center;margin-bottom:4rem}.community-title{font-size:3.5rem;font-weight:900;margin-bottom:1.5rem;letter-spacing:-.02em;color:var(--ink)}.community-subtitle{font-size:1.25rem;max-width:600px;margin:0 auto;opacity:.8;color:var(--ink-muted)}.community-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:2rem;max-width:900px;margin:0 auto 3rem}.community-card{background:var(--paper);border:1px solid var(--taupe-line);border-radius:32px;transition:all .4s cubic-bezier(.2,.8,.2,1);box-shadow:var(--shadow-soft, 0 4px 12px rgba(0, 0, 0, .05));text-decoration:none;color:inherit;overflow:hidden}.community-card:hover{transform:translateY(-8px) scale(1.02);border-color:var(--color-secondary, var(--amber));box-shadow:0 20px 40px #0000001a}.community-card:hover .icon-box{transform:scale(1.1) rotate(5deg)}.community-cta{margin-top:2rem}.btn-primary{display:inline-block;padding:1rem 2.5rem;background:linear-gradient(135deg,var(--color-primary) 0%,var(--color-secondary, var(--amber)) 100%);color:#fff;border-radius:16px;font-weight:600;font-size:1.1rem;text-decoration:none;transition:all .3s ease;box-shadow:0 4px 12px #00000026}.btn-primary:hover{transform:translateY(-2px);box-shadow:0 8px 24px #0003}.learning-hub-page{max-width:1200px;margin:0 auto;padding:8rem 2rem 3rem}.learning-header{text-align:center;margin-bottom:3rem}.learning-title{font-size:2.5rem;margin-bottom:1rem;background:linear-gradient(135deg,var(--color-primary),#5e5ce6);-webkit-background-clip:text;-webkit-text-fill-color:transparent}.learning-subtitle{color:var(--ink-muted);font-size:1.2rem;max-width:640px;margin:0 auto}.learning-cta-row{display:flex;justify-content:center;gap:1rem;flex-wrap:wrap;margin-bottom:3rem}.learning-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:2rem}.skill-card{border-top:4px solid;padding:1.5rem}.glass-panel{background:#ffffff0d;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid var(--taupe-line);border-radius:16px}.listening-card{border-color:#ffd60a}.reading-card{border-color:var(--color-sage)}.writing-card{border-color:var(--color-primary)}.speaking-card{border-color:#5e5ce6}.daily-tests-card{border-color:#ff9f0a}.skill-header{display:flex;align-items:center;gap:1rem;margin-bottom:1.5rem}.skill-icon{padding:10px;border-radius:12px}.listening-icon{background:#ffd60a1a;color:#ffd60a}.reading-icon{background:#30d1581a;color:var(--color-sage)}.writing-icon{background:#0a84ff1a;color:var(--color-primary)}.speaking-icon{background:#5e5ce61a;color:#5e5ce6}.daily-icon{background:#ff9f0a1a;color:#ff9f0a}.skill-header h2{margin:0;font-size:1.25rem;color:var(--ink)}.tips-list h4{margin-bottom:.5rem;color:var(--ink)}.tips-list ul{list-style:none;padding:0;color:var(--ink-muted)}.tips-list li{margin-bottom:.5rem}.listening-btn{border-color:#ffd60a;color:#ffd60a}.reading-btn{border-color:var(--color-sage);color:var(--color-sage)}.writing-btn{border-color:var(--color-primary);color:var(--color-primary)}.speaking-btn{border-color:#5e5ce6;color:#5e5ce6}.daily-btn{border-color:#ff9f0a;color:#ff9f0a}.scoring-info{margin-top:4rem;padding:2rem;background:var(--paper-warm, rgba(255, 255, 255, .05));border-radius:16px;border:1px solid var(--taupe-line)}.scoring-info h3{margin-bottom:1rem;color:var(--ink)}.scoring-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem}.scoring-item p{font-size:.9rem;color:var(--ink-muted);margin:.5rem 0 0}.c1-color{color:var(--color-sage)}.b2-color{color:var(--color-primary)}.b1-color{color:#ffd60a}.costs-page{padding-top:6rem}.costs-hero{padding:4rem 0 3rem;background:linear-gradient(135deg,var(--paper-warm, #f9fafb) 0%,var(--paper) 100%)}.costs-hero h1{font-size:2.5rem;font-weight:800;color:var(--ink);margin-bottom:1rem;line-height:1.2}.costs-hero p{font-size:1.125rem;color:var(--ink-muted);max-width:680px}.costs-section{padding:4rem 0}.costs-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1.5rem;margin-top:2rem}.cost-card{background:var(--paper);border:1px solid var(--taupe-line);border-radius:16px;padding:1.5rem;transition:box-shadow .2s ease,transform .2s ease}.cost-card:hover{box-shadow:var(--shadow-md, 0 4px 12px rgba(0, 0, 0, .1));transform:translateY(-2px)}.cost-card-icon{width:48px;height:48px;background:var(--accent-light, color-mix(in oklch, var(--color-primary) 10%, transparent));border-radius:12px;display:flex;align-items:center;justify-content:center;margin-bottom:1rem}.cost-card-icon svg{width:24px;height:24px;color:var(--color-primary, var(--color-primary))}.cost-card-title{font-size:1.125rem;font-weight:600;color:var(--ink);margin-bottom:.5rem}.cost-card-amount{font-size:1.875rem;font-weight:800;color:var(--color-primary, var(--color-primary));margin-bottom:.25rem}.cost-card-period{font-size:.875rem;color:var(--ink-muted);margin-bottom:1rem}.cost-card-desc{font-size:.9rem;color:var(--ink-muted);line-height:1.6}.total-box{background:linear-gradient(135deg,var(--color-primary) 0%,var(--terracotta-dim, #4f46e5) 100%);border-radius:24px;padding:2.5rem;color:#fff;margin-top:2.5rem;text-align:center}.total-box h2{font-size:1.25rem;font-weight:600;margin-bottom:1rem;opacity:.95}.total-amount{font-size:3.75rem;font-weight:800;line-height:1;margin-bottom:.5rem}.total-period{font-size:1.125rem;opacity:.9;margin-bottom:1.5rem}.total-breakdown{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:1rem;max-width:800px;margin:0 auto;padding-top:1.5rem;border-top:1px solid rgba(255,255,255,.2)}.total-breakdown-item{text-align:center}.total-breakdown-label{font-size:.875rem;opacity:.85;margin-bottom:.25rem}.total-breakdown-value{font-size:1.25rem;font-weight:600}.info-box{background:var(--paper-warm, #f9fafb);border:1px solid var(--taupe-line);border-radius:16px;padding:1.5rem;margin-top:2rem}.info-box h3{font-size:1.125rem;font-weight:600;color:var(--ink);margin-bottom:.75rem}.info-box ul{list-style:none;padding-left:0}.info-box li{padding:.5rem 0 .5rem 1.5rem;position:relative;color:var(--ink-muted)}.info-box li:before{content:"✓";position:absolute;left:0;color:var(--color-primary, var(--color-primary));font-weight:700}.comparison-table{width:100%;border-collapse:collapse;margin-top:1rem;background:var(--paper);border-radius:12px;overflow:hidden;border:1px solid var(--taupe-line)}.comparison-table th,.comparison-table td{padding:1rem;text-align:left;border-bottom:1px solid var(--taupe-line)}.comparison-table th{background:var(--paper-warm, #f9fafb);font-weight:600;color:var(--ink)}.comparison-table td{color:var(--ink-muted)}.comparison-table tr:last-child td{border-bottom:none}.comparison-table tr:hover td{background:var(--paper-warm, #f9fafb)}.highlight-green{color:#059669;font-weight:600}.section-label{font-size:.875rem;font-weight:600;color:var(--color-primary, var(--color-primary));text-transform:uppercase;letter-spacing:.05em;margin-bottom:.75rem}.cta-section{padding-bottom:5rem}.cta-title{font-size:1.875rem;font-weight:700;color:var(--ink);margin-bottom:1rem}.cta-desc{font-size:1.125rem;color:var(--ink-muted);margin:0 auto 1.5rem;max-width:600px}.text-center{text-align:center}.container{max-width:1200px;margin:0 auto;padding:0 2rem}@media(max-width:768px){.legal-page{padding:6rem 1rem 2rem}.legal-header h1{font-size:2rem}.legal-section h2{font-size:1.3rem}.contact-title{font-size:2.5rem}.card-inner{padding:2rem}.learning-hub-page{padding:6rem 1rem 2rem}.learning-title,.costs-hero h1{font-size:2rem}.total-amount{font-size:3rem}.total-breakdown{grid-template-columns:repeat(2,1fr)}.comparison-table{font-size:.875rem}.comparison-table th,.comparison-table td{padding:.75rem}.costs-grid{grid-template-columns:1fr}}:root{--cobalt: oklch(53% .16 257);--cobalt-deep: oklch(43% .16 262);--cobalt-bright: oklch(68% .15 255);--red-pen: oklch(57% .2 27);--highlighter: oklch(85% .13 95);--ink: oklch(23% .025 262);--paper: oklch(98.3% .004 250);--cobalt-ink: oklch(40% .14 262);--ink-muted: oklch(37% .02 262);--ink-subtle: oklch(45% .016 262);--paper-warm: oklch(96.4% .006 250);--paper-deep: oklch(93.5% .008 250);--ink-surface: oklch(16% .025 262);--line: oklch(90% .01 255);--terracotta: var(--cobalt);--terracotta-dim: var(--cobalt-ink);--amber: var(--highlighter);--taupe-line: var(--line);--text-heading: var(--ink);--text-body: var(--ink-muted);--text-secondary: var(--ink-subtle);--text-caption: var(--ink-subtle);--color-parchment: var(--paper);--color-parchment-warm: var(--paper-warm);--color-parchment-deep: var(--paper-deep);--color-terracotta: var(--cobalt);--color-terracotta-dark: var(--cobalt-deep);--color-terracotta-light: var(--cobalt-bright);--color-terracotta-ghost: oklch(53% .16 257 / .07);--color-terracotta-subtle: oklch(53% .16 257 / .14);--color-forest: var(--ink);--color-forest-light: oklch(30% .02 262);--color-forest-muted: var(--ink-muted);--color-taupe-100: oklch(95.5% .005 250);--color-taupe-200: oklch(91% .008 250);--color-taupe-300: oklch(85% .01 250);--color-taupe-400: oklch(72% .012 250);--color-taupe-500: oklch(52% .016 255);--color-taupe-600: oklch(42% .018 258);--color-taupe-700: oklch(32% .02 260);--color-sage: oklch(58% .13 155);--color-sage-light: oklch(92% .06 155);--color-sage-ghost: oklch(58% .13 155 / .08);--color-warm-amber: oklch(72% .13 70);--color-warm-amber-light: oklch(95% .05 70);--color-warm-amber-ghost: oklch(72% .13 70 / .1);--color-soft-coral: oklch(55% .19 27);--color-red-pen: var(--red-pen);--color-primary: var(--cobalt);--color-primary-dark: var(--cobalt-deep);--color-primary-light: var(--cobalt-bright);--color-primary-glow: oklch(53% .16 257 / .14);--color-accent: var(--color-sage);--color-accent-dark: oklch(40% .1 155);--color-accent-light: var(--color-sage);--color-accent-glow: oklch(92% .06 155);--color-warm: var(--color-warm-amber);--color-warm-light: var(--color-warm-amber-light);--color-success: var(--color-sage);--color-warning: var(--color-warm-amber);--color-error: var(--color-soft-coral);--gradient-primary: linear-gradient(135deg, var(--cobalt) 0%, var(--cobalt-deep) 100%);--gradient-hero: radial-gradient( ellipse at 50% 30%, oklch(53% .16 257 / .05) 0%, transparent 60% );--gradient-dark: linear-gradient( 180deg, var(--paper) 0%, var(--paper-warm) 100% );--gradient-card: linear-gradient( 135deg, oklch(100% 0 0 / .95) 0%, oklch(98.3% .004 250 / .98) 100% );--r-xs: 8px;--r-sm: 14px;--r-md: 22px;--r-lg: 32px;--r-xl: 48px;--r-pill: 9999px;--radius-sm: var(--r-sm);--radius-md: var(--r-md);--radius-lg: var(--r-lg);--radius-xl: var(--r-xl);--radius-2xl: var(--r-xl);--radius-full: var(--r-pill);--text-xs: .8125rem;--text-sm: .9375rem;--text-base: 1.0625rem;--text-lg: 1.25rem;--text-xl: 1.5rem;--text-2xl: 2rem;--text-3xl: 2.75rem;--text-4xl: 2.25rem;--text-5xl: 2.75rem;--text-6xl: 3.5rem;--text-hero: 6rem;--spring-snap: cubic-bezier(.34, 1.56, .64, 1);--spring-smooth: cubic-bezier(.16, 1, .3, 1);--spring-gentle: cubic-bezier(.22, 1, .36, 1);--t-snap: .2s var(--spring-snap);--t-smooth: .38s var(--spring-smooth);--t-gentle: .6s var(--spring-gentle);--transition-fast: .15s var(--spring-snap);--transition-base: .25s var(--spring-smooth);--transition-slow: .4s var(--spring-smooth);--shadow-sm: 0 1px 3px rgb(15 25 60 / .05);--shadow-md: 0 2px 10px rgb(15 25 60 / .07);--shadow-lg: 0 4px 20px rgb(15 25 60 / .08);--shadow-xl: 0 8px 32px rgb(15 25 60 / .09);--shadow-2xl: 0 12px 48px rgb(15 25 60 / .1);--shadow-glow: 0 4px 16px oklch(53% .16 257 / .22);--shadow-glass: inset 0 1px 0 rgba(255, 255, 255, .6), 0 2px 8px rgb(0 0 0 / .06);--bento-bg: var(--paper);--bento-card: oklch(98.7% .003 250);--bento-card-hover: oklch(97.4% .005 250);--bento-border: oklch(91% .008 250);--bento-radius: 20px;--bento-radius-lg: 28px;--bento-gap: 12px;--bento-pad: 28px;--bento-pad-lg: 36px;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.25rem;--space-6: 1.5rem;--space-7: 1.75rem;--space-8: 2rem;--space-9: 2.25rem;--space-10: 2.5rem;--space-11: 2.75rem;--space-12: 3rem;--space-16: 4rem;--space-20: 5rem;--space-24: 6rem;--space-32: 8rem;--max-width: 1280px;--nav-height: 64px;--color-white: #ffffff;--surface: var(--paper);--surface-raised: var(--paper-warm);--border-subtle: var(--taupe-line);--font-display: "Unbounded", "Inter", -apple-system, BlinkMacSystemFont, sans-serif;--font-sans: "Inter", -apple-system, BlinkMacSystemFont, "Helvetica Neue", "Segoe UI", sans-serif;--font-mono: "IBM Plex Mono", ui-monospace, "SF Mono", "Cascadia Code", Menlo, Consolas, monospace}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;-webkit-text-size-adjust:100%;background-color:var(--paper);overflow-x:hidden;overflow-x:clip}html:after{content:"";position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:9999;opacity:.015;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)'/%3E%3C/svg%3E");background-size:256px 256px}body{font-family:var(--font-sans);font-size:var(--text-base);line-height:1.7;color:var(--text-body);background-color:var(--paper);overflow-x:hidden;overflow-x:clip;font-weight:400;font-variation-settings:"opsz" auto}.spinner,.app-loading .spinner{width:40px;height:40px;border:3px solid var(--taupe-line);border-top-color:var(--color-primary);border-radius:50%;animation:cefr-spin .85s linear infinite}@keyframes cefr-spin{to{transform:rotate(360deg)}}.app-loading{display:flex;align-items:center;justify-content:center;min-height:100vh;background:var(--paper)}#root{min-height:100vh;background:var(--paper)}.app{width:100%;min-height:100vh}main{display:block;position:relative;z-index:1}img{max-width:100%;height:auto;display:block}img.emoji-img{display:inline-block!important;height:auto;max-width:none;vertical-align:middle}a{color:inherit;text-decoration:none}button{font-family:inherit;cursor:pointer;border:none;background:none}ul,ol{list-style:none}.skip-to-content{position:fixed;top:-100px;left:50%;transform:translate(-50%);z-index:10000;padding:12px 24px;background:var(--ink);color:var(--paper);border-radius:var(--r-sm);font-weight:600;font-size:var(--text-sm);text-decoration:none;transition:top .2s var(--spring-smooth)}.skip-to-content:focus{top:20px;outline:3px solid var(--terracotta);outline-offset:2px}main:focus{outline:none}.container{width:100%;max-width:var(--max-width);margin:0 auto;padding:0 var(--space-6)}.section{padding:clamp(var(--space-16),6vw,var(--space-24)) 0;position:relative;z-index:1;min-height:100px}.section-bg-default{background:var(--paper)}.section-bg-light{background:var(--paper-warm)}.section-bg-dark{background:var(--paper-warm);color:var(--ink)}.section-bg-gradient{background:var(--paper)}.section-bg-ink{background:var(--ink-surface);color:var(--paper)}.section-title{font-size:clamp(var(--text-2xl),4vw,var(--text-4xl));font-weight:600;text-align:center;margin-bottom:var(--space-3);line-height:1.1;letter-spacing:-.035em;color:var(--text-heading)}.section-subtitle{font-size:clamp(var(--text-base),1.5vw,var(--text-lg));text-align:center;color:var(--text-body);max-width:560px;margin:0 auto var(--space-10);line-height:1.6}.section-reveal{opacity:0;transform:translateY(18px);transition:opacity .32s var(--spring-smooth),transform .32s var(--spring-smooth)}.section-reveal.section-reveal--visible{opacity:1;transform:translateY(0)}@media(prefers-reduced-motion:reduce){.section-reveal{opacity:1;transform:none;transition:none}}.section-bg-ink .section-title{color:var(--paper)}.section-bg-ink .section-subtitle{color:#a8afb8}.glass{background:#ffffffa6;background:color-mix(in oklch,white 65%,transparent);backdrop-filter:blur(40px) saturate(180%);-webkit-backdrop-filter:blur(40px) saturate(180%);border:1px solid rgba(255,255,255,.8);border:1px solid color-mix(in oklch,white 80%,transparent);box-shadow:inset 0 1px #fff9,var(--shadow-md)}@supports not (backdrop-filter: blur(1px)){.glass{background:#faf8f5f7;border:1px solid var(--taupe-line)}}.glass-tinted{background:color-mix(in oklch,var(--terracotta) 88%,transparent);color:#fff;backdrop-filter:blur(20px) saturate(150%);-webkit-backdrop-filter:blur(20px) saturate(150%);border:1px solid rgba(255,255,255,.2);box-shadow:inset 0 1px #ffffff40,var(--shadow-glow)}.glass-dark{background:#221811bf;backdrop-filter:blur(20px) saturate(180%);-webkit-backdrop-filter:blur(20px) saturate(180%);border:1px solid rgba(255,255,255,.1);box-shadow:var(--shadow-glass)}.glass-subtle{background:#ffffff80;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid rgba(255,255,255,.18)}.rounded-liquid{border-radius:var(--r-md);transition:all var(--t-smooth)}.rounded-liquid:hover{border-radius:var(--r-lg);box-shadow:var(--shadow-lg);transform:translateY(-2px)}.card-liquid{background:linear-gradient(135deg,#ffffffe6,#faf8f5f2);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border:1px solid rgba(255,255,255,.5);box-shadow:0 4px 16px #0000000f,inset 0 1px #fffc;border-radius:var(--r-md);transition:all var(--t-smooth)}.card-liquid:hover{box-shadow:0 8px 32px #00000017,inset 0 1px #fff;transform:translateY(-4px)}.reveal{opacity:1;transform:translateY(0);transition:opacity .6s var(--spring-smooth),transform .6s var(--spring-smooth)}.reveal.active{opacity:1;transform:translateY(0)}@keyframes fadeInUp{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideInLeft{0%{opacity:0;transform:translate(-32px)}to{opacity:1;transform:translate(0)}}@keyframes slideInRight{0%{opacity:0;transform:translate(32px)}to{opacity:1;transform:translate(0)}}@keyframes shimmer{0%{background-position:-1000px 0}to{background-position:1000px 0}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.animate-fade-in-up{animation:fadeInUp .6s var(--spring-smooth) forwards}.animate-fade-in{animation:fadeIn .6s var(--spring-smooth) forwards}.animate-slide-in-left{animation:slideInLeft .6s var(--spring-smooth) forwards}.animate-slide-in-right{animation:slideInRight .6s var(--spring-smooth) forwards}:focus-visible{outline:2px solid var(--terracotta);outline-offset:2px;border-radius:var(--r-xs)}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}html:after{display:none}}@media(max-width:1024px){.container{padding:0 var(--space-5)}.section{padding:var(--space-20) 0}.section-title{font-size:var(--text-3xl)}}@media(max-width:768px){.container{padding:0 var(--space-4)}.section{padding:var(--space-16) 0}.section-title{font-size:var(--text-2xl)}.section-subtitle{font-size:var(--text-base);margin-bottom:var(--space-10)}}html,body,#root{transition:background-color .28s var(--spring-smooth),color .28s var(--spring-smooth)}[data-theme=dark]{--paper: oklch(14.5% .018 262);--paper-warm: oklch(17.5% .02 262);--paper-deep: oklch(20% .022 262);--ink: oklch(93% .008 250);--ink-muted: oklch(78% .012 255);--ink-subtle: oklch(65% .015 255);--cobalt: var(--cobalt-bright);--cobalt-ink: oklch(75% .12 250);--red-pen: oklch(66% .19 27);--text-heading: var(--ink);--text-body: var(--ink-muted);--text-secondary: var(--ink-subtle);--text-caption: var(--ink-subtle);--line: oklch(27% .02 262);--taupe-line: var(--line);--ink-surface: oklch(10% .02 262);--terracotta: var(--cobalt);--terracotta-dim: var(--cobalt-ink);--color-parchment: oklch(93% .008 250);--color-parchment-warm: oklch(17.5% .02 262);--color-parchment-deep: oklch(20% .022 262);--color-terracotta: var(--cobalt);--color-terracotta-dark: var(--cobalt-bright);--color-terracotta-light: var(--cobalt-bright);--color-terracotta-ghost: oklch(68% .15 255 / .16);--color-terracotta-subtle: oklch(68% .15 255 / .24);--color-forest: oklch(93% .008 250);--color-forest-light: oklch(85% .008 255);--color-forest-muted: oklch(70% .01 255);--color-taupe-100: oklch(20% .02 262);--color-taupe-200: oklch(27% .02 262);--color-taupe-300: oklch(35% .02 262);--color-taupe-400: oklch(47% .02 260);--color-taupe-500: oklch(62% .015 255);--color-taupe-600: oklch(73% .01 252);--color-taupe-700: oklch(84% .008 250);--color-sage-ghost: oklch(58% .13 155 / .15);--color-warm-amber-ghost: oklch(72% .13 70 / .15);--shadow-sm: 0 1px 3px rgb(0 0 0 / .3);--shadow-md: 0 2px 10px rgb(0 0 0 / .4);--shadow-lg: 0 4px 20px rgb(0 0 0 / .5);--shadow-xl: 0 8px 32px rgb(0 0 0 / .55);--bento-bg: oklch(14.5% .018 262);--bento-card: oklch(19% .022 262);--bento-card-hover: oklch(23% .024 262);--bento-border: oklch(27% .02 262)}[data-theme=dark] .glass{background:var(--bento-card);border:1px solid var(--bento-border);box-shadow:0 4px 20px #0000004d}@supports not (backdrop-filter: blur(1px)){[data-theme=dark] .glass{background:var(--bento-card);border:1px solid var(--bento-border)}}[data-theme=dark] .pricing-card--recommended{border-color:var(--terracotta)}[data-theme=dark] .pricing-badge{background:var(--paper)}[data-theme=dark] .grammar-tooltip,[data-theme=dark] .def-word:after{background:#edebe7;color:#0d0805}[data-theme=dark] .footer{background:var(--paper);border-top-color:var(--taupe-line)}[data-theme=dark] .lang-toggle{background:#ffffff0f;border-color:#ffffff1a}[data-theme=dark] .lang-opt--active{background:#ffffff1f;color:var(--ink)}[data-theme=dark] .pricing-cta--secondary{background:#ffffff0a}[data-theme=dark] html:after{opacity:.025;mix-blend-mode:screen}[data-theme=dark] .settings-page,[data-theme=dark] .profile-page,[data-theme=dark] .estimate-page,[data-theme=dark] .enterprise-plan-page,[data-theme=dark] .writing-hub,[data-theme=dark] .speaking-hub,[data-theme=dark] .reading-hub,[data-theme=dark] .listening-hub,[data-theme=dark] .writing-test-page,[data-theme=dark] .speaking-test-page,[data-theme=dark] .reading-test-page,[data-theme=dark] .listening-test-page,[data-theme=dark] .writing-result-page,[data-theme=dark] .speaking-result-page,[data-theme=dark] .reading-result-page,[data-theme=dark] .listening-result-page,[data-theme=dark] .full-test-page,[data-theme=dark] .full-test-warning,[data-theme=dark] .full-test-break,[data-theme=dark] .full-test-banned,[data-theme=dark] .full-test-result{background:var(--paper);color:var(--ink)}[data-theme=dark] .settings-header,[data-theme=dark] .profile-header,[data-theme=dark] .hub-header,[data-theme=dark] .test-header{background:var(--paper);border-color:var(--taupe-line)}[data-theme=dark] .settings-card,[data-theme=dark] .profile-section,[data-theme=dark] .profile-card,[data-theme=dark] .hub-card,[data-theme=dark] .test-card,[data-theme=dark] .result-card,[data-theme=dark] .info-card,[data-theme=dark] .stat-card,[data-theme=dark] .skill-card,[data-theme=dark] .question-card,[data-theme=dark] .answer-card,[data-theme=dark] .summary-card{background:#1b1510;border-color:#ffffff1f;box-shadow:0 4px 16px #0000004d;color:var(--ink)}[data-theme=dark] [style*="background: white"],[data-theme=dark] [style*="background:#fff"],[data-theme=dark] [style*="background: #fff"]{background:#1b1510!important}[data-theme=dark] .profile-card--active{border-left-color:var(--color-success)}[data-theme=dark] .profile-card--inactive{border-left-color:var(--ink-subtle)}[data-theme=dark] .profile-card-row .stat-icon{background:color-mix(in oklch,var(--color-success) 12%,transparent)}[data-theme=dark] .profile-card-row--inactive .stat-icon{background:#ffffff0f}[data-theme=dark] .profile-active-badge{background:color-mix(in oklch,var(--color-success) 18%,transparent)}[data-theme=dark] .profile-upgrade-btn{background:linear-gradient(135deg,var(--color-warm-amber),#ff6b00);color:var(--paper)}[data-theme=dark] .profile-card-referral .stat-icon{background:color-mix(in oklch,var(--color-warning) 15%,transparent)}[data-theme=dark] .profile-card-writing .stat-icon,[data-theme=dark] .profile-card-speaking .stat-icon{background:#ffffff0f}[data-theme=dark] .profile-card-certificate .stat-icon{background:color-mix(in oklch,var(--color-success) 12%,transparent)}[data-theme=dark] input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=color]),[data-theme=dark] textarea,[data-theme=dark] select{background:#16100c;color:var(--ink);border-color:var(--taupe-line)}[data-theme=dark] input::placeholder,[data-theme=dark] textarea::placeholder{color:var(--ink-subtle)}[data-theme=dark] input:focus,[data-theme=dark] textarea:focus,[data-theme=dark] select:focus{border-color:var(--terracotta);box-shadow:0 0 0 3px #2971c633}[data-theme=dark] .modal,[data-theme=dark] .modal-content,[data-theme=dark] .dialog{background:#16100c;color:var(--ink);border-color:var(--taupe-line)}[data-theme=dark] .toast,[data-theme=dark] .notification{background:#1b1510;color:var(--ink);border-color:var(--taupe-line)}.exam-mode-segment{display:flex;gap:4px;padding:3px;border-radius:999px;background:color-mix(in oklch,#e5e5e5 80%,transparent)}.exam-mode-option{flex:1;border:none;background:transparent;border-radius:999px;padding:7px 10px;font-size:12px;font-weight:600;cursor:pointer;opacity:.7;transition:all .15s ease;color:inherit}.exam-mode-option.active{background:#fff;opacity:1;box-shadow:0 1px 4px #00000014}[data-theme=dark] .exam-mode-option.active{background:#1e293b}.settings-exam-mode{max-width:320px;margin:.5rem 0 1rem}.settings-target-band{display:flex;align-items:center;gap:.75rem;margin-top:.75rem;font-size:.9rem}.settings-target-band select{padding:.35rem .5rem;border-radius:8px;border:1px solid #d4d4d4}.settings-error{color:#b91c1c;font-size:.85rem}.settings-hint{font-size:.85rem;opacity:.75;margin:0 0 .5rem}.writing-module-toggle{margin:0 0 1.25rem;max-width:360px}:root{--gradient-primary-animated: linear-gradient( 120deg, var(--cobalt) 0%, var(--cobalt-deep) 30%, oklch(58% .14 240) 55%, var(--cobalt) 85% );--ring-focus: 0 0 0 3px color-mix(in oklch, var(--cobalt) 32%, transparent)}html{scroll-padding-top:calc(var(--nav-height) + 28px)}::selection{background:color-mix(in oklch,var(--terracotta) 22%,transparent);color:var(--text-heading)}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:color-mix(in oklch,var(--ink-subtle) 36%,transparent);border-radius:999px;border:3px solid transparent;background-clip:padding-box}::-webkit-scrollbar-thumb:hover{background:color-mix(in oklch,var(--ink-subtle) 58%,transparent);border:3px solid transparent;background-clip:padding-box}.text-gradient{color:var(--terracotta);background:none;-webkit-text-fill-color:currentColor}.eyebrow-chip{display:inline-flex;align-items:center;gap:8px;padding:7px 14px;border-radius:var(--r-pill);background:color-mix(in oklch,var(--terracotta) 7%,transparent);border:1px solid color-mix(in oklch,var(--terracotta) 18%,transparent);color:var(--terracotta-dim);font-family:var(--font-sans);font-size:var(--text-xs);font-weight:600;letter-spacing:.08em;text-transform:uppercase}[data-theme=dark] .eyebrow-chip{color:color-mix(in oklch,var(--terracotta) 65%,white);background:color-mix(in oklch,var(--terracotta) 12%,transparent)}.eyebrow-chip,.hero-panel-label,.hero-panel-active,.hero-preview-tag,.pillar-step-num{font-family:var(--font-mono)}.eyebrow-chip{font-size:.72rem;letter-spacing:.14em}.landing{--lx-canvas: oklch(97.6% .004 85);--lx-canvas-deep: oklch(94.6% .005 85);--lx-paper: oklch(99.3% .002 85);--lx-ink-band: oklch(15.5% .012 60);--lx-ink: oklch(17% .012 60);--lx-ink-2: oklch(40% .012 60);--lx-ink-3: oklch(53% .01 60);--lx-ink-on-dark: oklch(95% .004 85);--lx-ink-2-on-dark: oklch(78% .006 80);--lx-line: oklch(87% .007 80);--lx-rule: var(--lx-ink);--lx-accent: oklch(63% .21 38);--lx-accent-deep: oklch(55% .2 40);--lx-accent-soft: oklch(63% .21 38 / .11);--lx-ink-on-accent: oklch(16% .012 60);--lx-good: oklch(50% .13 152);--lx-warn: oklch(62% .14 70);--lx-bad: oklch(53% .19 27);--lx-shadow-hard: 5px 5px 0 0 var(--lx-ink);--lx-shadow-hard-sm: 3px 3px 0 0 var(--lx-ink);--lx-shadow-soft: 0 14px 40px oklch(17% .012 60 / .08);--lx-display: "Bricolage Grotesque Variable", "Hanken Grotesk Variable", -apple-system, sans-serif;--lx-body: "Hanken Grotesk Variable", -apple-system, "Segoe UI", sans-serif;--lx-mono: "Space Mono", ui-monospace, "SF Mono", Menlo, monospace;--lx-chip: 999px;--gradient-primary: linear-gradient( 135deg, var(--lx-accent) 0%, var(--lx-accent) 100% );--gradient-hero: none;--gradient-dark: none;--gradient-card: linear-gradient( 135deg, var(--lx-paper) 0%, var(--lx-paper) 100% );--shadow-glow: 3px 3px 0 0 var(--lx-ink);--terracotta: var(--lx-accent);--terracotta-dim: var(--lx-accent-deep);--cobalt: var(--lx-accent);--cobalt-deep: var(--lx-accent-deep);--cobalt-bright: var(--lx-accent);--ink: var(--lx-ink);--paper: var(--lx-canvas);--paper-warm: var(--lx-canvas-deep);--paper-deep: var(--lx-canvas-deep);--line: var(--lx-line);--taupe-line: var(--lx-line);--ink-surface: var(--lx-ink-band);--ink-muted: var(--lx-ink-2);--ink-subtle: var(--lx-ink-3);--text-heading: var(--lx-ink);--text-body: var(--lx-ink-2);--text-secondary: var(--lx-ink-2);--text-caption: var(--lx-ink-3);--font-display: var(--lx-display);--font-sans: var(--lx-body);--font-mono: var(--lx-mono);--shadow-hard: var(--lx-shadow-hard);background:var(--lx-canvas);color:var(--lx-ink-2);font-family:var(--lx-body)}html[data-theme=dark] .landing{--lx-canvas: oklch(14% .008 70);--lx-canvas-deep: oklch(17% .01 70);--lx-paper: oklch(19% .01 70);--lx-ink-band: oklch(10% .01 65);--lx-ink: oklch(94% .004 85);--lx-ink-2: oklch(77% .007 80);--lx-ink-3: oklch(62% .008 80);--lx-ink-on-dark: oklch(94% .004 85);--lx-ink-2-on-dark: oklch(78% .006 80);--lx-line: oklch(26% .01 70);--lx-rule: oklch(45% .01 70);--lx-accent: oklch(70% .19 40);--lx-accent-deep: oklch(76% .17 42);--lx-accent-soft: oklch(70% .19 40 / .16);--lx-good: oklch(66% .14 152);--lx-warn: oklch(75% .13 75);--lx-bad: oklch(66% .18 27);--lx-shadow-hard: 5px 5px 0 0 oklch(0% 0 0 / .9);--lx-shadow-hard-sm: 3px 3px 0 0 oklch(0% 0 0 / .9);--lx-shadow-soft: 0 14px 40px oklch(0% 0 0 / .45)}.landing .section-title{font-family:var(--lx-display);font-size:clamp(2.1rem,4.6vw,3.6rem);font-weight:800;letter-spacing:-.04em;line-height:1.02;text-align:left;max-width:22ch;margin-bottom:1rem;text-wrap:balance}.landing .section-subtitle{text-align:left;margin:0 0 3.5rem;max-width:56ch;font-size:1.1rem;line-height:1.65;color:var(--lx-ink-2)}.landing .text-gradient{color:var(--lx-accent)}.landing .glass,.landing .glass-subtle{background:var(--lx-paper);backdrop-filter:none;-webkit-backdrop-filter:none;border:1.5px solid var(--lx-ink);border-radius:0;box-shadow:var(--lx-shadow-hard)}@supports not (backdrop-filter: blur(1px)){.landing .glass{background:var(--lx-paper);border:1.5px solid var(--lx-ink)}}.lx-chip{display:inline-flex;align-items:center;gap:6px;padding:4px 12px;border-radius:var(--lx-chip);background:var(--lx-accent-soft);color:var(--lx-accent-deep);font-family:var(--lx-mono);font-size:.72rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;white-space:nowrap}html[data-theme=dark] .landing .lx-chip{color:var(--lx-accent)}@keyframes lx-marquee{0%{transform:translate(0)}to{transform:translate(-50%)}}@media(prefers-reduced-motion:reduce){.lx-marquee-track{animation:none!important}}.landing :focus-visible{outline:2.5px solid var(--lx-accent);outline-offset:2px;border-radius:0}.landing .landing-cta,.landing .landing-cta *{border-radius:0}.landing .section-bg-ink{background:var(--lx-ink-band);color:var(--lx-ink-2-on-dark)}.landing .section-bg-ink .section-title{color:var(--lx-ink-on-dark)}.landing .section-bg-ink .section-subtitle{color:var(--lx-ink-2-on-dark)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);font-weight:600;font-family:var(--font-sans);border-radius:var(--r-pill);transition:all var(--transition-base);cursor:pointer;border:none}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--gradient-primary);color:#fff;box-shadow:var(--shadow-glow)}.btn-primary:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 12px 32px color-mix(in oklch,var(--color-primary) 28%,transparent)}.btn-lg{padding:var(--space-3) var(--space-6);font-size:var(--text-lg)}.btn-block{width:100%;display:flex}.loader{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--space-12)}.loader .spinner{width:48px;height:48px;margin-bottom:var(--space-6)}.auth-error{background:color-mix(in oklch,var(--color-error) 8%,transparent);border:1px solid color-mix(in oklch,var(--color-error) 22%,transparent);color:var(--color-error);border-radius:var(--r-sm);padding:var(--space-3) var(--space-4);font-size:var(--text-sm);text-align:center}.test-page,.writing-test-page,.reading-test-page,.listening-test-page,.speaking-test-page,.result-page,.speaking-result-page,.reading-result-page,.listening-result-page{min-height:100vh;background:var(--paper);color:var(--ink-muted);font-family:var(--font-sans);font-size:var(--text-base);line-height:1.7}.test-loading,.loading-state,.speaking-test-loading,.result-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:60vh;gap:var(--space-4);color:var(--ink-muted)}.test-error,.error-state,.speaking-test-error,.result-error{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:60vh;gap:var(--space-6);text-align:center;padding:var(--space-8)}.error-icon{font-size:2.5rem;opacity:.7}.spinner{width:32px;height:32px;border:3px solid var(--taupe-line);border-top-color:var(--terracotta);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.btn,.btn-start,.btn-start-test,.btn-submit,.btn-back,.btn-retry,.btn-secondary,.btn-primary,.btn-outline{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);padding:12px 24px;border-radius:var(--r-md);font-size:var(--text-base);font-weight:500;font-family:inherit;cursor:pointer;border:none;transition:all var(--t-snap);text-decoration:none;white-space:nowrap}.btn-primary,.btn-start,.btn-start-test,.btn-submit{background:var(--terracotta);color:#fff}.btn-primary:hover,.btn-start:hover,.btn-start-test:hover,.btn-submit:hover{background:var(--terracotta-dim);transform:translateY(-1px)}.btn-primary:active,.btn-start:active,.btn-start-test:active,.btn-submit:active{transform:translateY(0) scale(.97)}.btn-primary:disabled,.btn-start:disabled,.btn-start-test:disabled,.btn-submit:disabled{opacity:.5;cursor:not-allowed;transform:none}.btn-outline,.btn-back,.btn-retry,.btn-secondary{background:transparent;color:var(--ink-muted);border:1px solid var(--taupe-line)}.btn-outline:hover,.btn-back:hover,.btn-retry:hover,.btn-secondary:hover{border-color:var(--ink-subtle);color:var(--ink)}.btn-lg{padding:14px 28px;font-size:var(--text-lg)}.btn-sm{padding:8px 16px;font-size:var(--text-sm)}.start-overlay{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:80vh;gap:var(--space-6);text-align:center;padding:var(--space-8)}.start-icon{font-size:3.5rem;margin-bottom:var(--space-2)}.start-overlay h1{font-size:var(--text-3xl);font-weight:600;color:var(--ink);letter-spacing:-.025em;line-height:1.2}.start-subtitle{font-size:var(--text-lg);color:var(--ink-muted);max-width:480px;line-height:1.6}.draft-notice{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-4) var(--space-6);background:var(--color-terracotta-ghost);border:1px solid var(--color-terracotta-subtle);border-radius:var(--r-md);font-size:var(--text-sm);color:var(--terracotta-dim)}.draft-icon{font-size:1.25rem}.test-timer,.timer-box{display:flex;flex-direction:column;align-items:flex-end;gap:2px}.timer-label{font-size:var(--text-xs);color:var(--ink-subtle);text-transform:uppercase;letter-spacing:.04em}.timer-display{font-size:var(--text-2xl);font-weight:600;font-variant-numeric:tabular-nums;color:var(--ink);letter-spacing:-.02em}.timer-display.warning,.timer-display.timer-warning{color:var(--color-warm-amber);animation:pulse-timer 1.5s ease-in-out infinite}@keyframes pulse-timer{0%,to{opacity:1}50%{opacity:.6}}.test-header,.reading-test-header,.listening-test-header{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-6);padding:var(--space-6) 0;border-bottom:1px solid var(--taupe-line);margin-bottom:var(--space-8);flex-wrap:wrap}.test-title h1,.header-left h1{font-size:var(--text-2xl);font-weight:600;color:var(--ink);letter-spacing:-.02em;margin:0}.test-subtitle,.header-meta{font-size:var(--text-sm);color:var(--ink-subtle)}.question-card,.card-liquid{background:linear-gradient(135deg,#ffffffe6,#faf8f5f2);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border:1px solid rgba(255,255,255,.5);box-shadow:0 4px 16px #0000000f,inset 0 1px #fffc;border-radius:var(--r-md);padding:var(--space-8);transition:all var(--t-smooth)}.question-card:hover{box-shadow:0 8px 32px #00000017,inset 0 1px #fff}.topic-box{padding:var(--space-6);background:var(--paper-warm);border:1px solid var(--taupe-line);border-radius:var(--r-sm);margin-bottom:var(--space-5);font-size:var(--text-base);line-height:1.7;color:var(--ink-muted)}.topic-informal{border-left:3px solid var(--color-warm-amber)}.topic-formal{border-left:3px solid var(--color-sage)}.topic-essay{border-left:3px solid var(--terracotta)}textarea,.text-input,input[type=text]{width:100%;padding:var(--space-4);border:1px solid var(--taupe-line);border-radius:var(--r-sm);background:var(--paper);color:var(--ink);font-family:inherit;font-size:var(--text-base);line-height:1.7;resize:vertical;transition:border-color var(--t-snap),box-shadow var(--t-snap)}textarea:focus,.text-input:focus,input[type=text]:focus{outline:none;border-color:var(--terracotta);box-shadow:0 0 0 3px #c26b4c26}textarea::placeholder,.text-input::placeholder{color:var(--ink-subtle)}.label-row{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-3);flex-wrap:wrap;gap:var(--space-3)}.label-row label{font-size:var(--text-sm);font-weight:500;color:var(--ink)}.word-hint{font-size:var(--text-xs);color:var(--ink-subtle);font-weight:400}.btn-ocr{display:inline-flex;align-items:center;gap:var(--space-2);padding:6px 14px;border:1px solid var(--taupe-line);border-radius:var(--r-sm);background:var(--paper);color:var(--ink-muted);font-size:var(--text-sm);font-weight:500;cursor:pointer;transition:all var(--t-snap)}.btn-ocr:hover{border-color:var(--ink-subtle);color:var(--ink)}.btn-ocr:disabled{opacity:.5;cursor:not-allowed}.btn-ocr.loading .spinner-small{display:inline-block}.spinner-small{display:none;width:14px;height:14px;border:2px solid var(--taupe-line);border-top-color:var(--terracotta);border-radius:50%;animation:spin .6s linear infinite}.ocr-error-banner{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);padding:var(--space-3) var(--space-5);background:#ce6f7014;border:1px solid oklch(65% .12 20 / .2);border-radius:var(--r-sm);color:var(--color-soft-coral);font-size:var(--text-sm);margin-bottom:var(--space-5)}.banner-dismiss{background:none;border:none;color:inherit;font-size:1.25rem;cursor:pointer;padding:0 var(--space-2);opacity:.6;transition:opacity var(--t-snap)}.banner-dismiss:hover{opacity:1}.submit-section{display:flex;flex-direction:column;align-items:center;gap:var(--space-3);padding:var(--space-8) 0}.submit-hint{font-size:var(--text-sm);color:var(--ink-subtle)}.submit-bar{display:flex;align-items:center;justify-content:space-between;gap:var(--space-6);padding:var(--space-5) var(--space-6);background:var(--paper-warm);border:1px solid var(--taupe-line);border-radius:var(--r-md);margin-top:var(--space-8);flex-wrap:wrap}.answered-indicator{font-size:var(--text-sm);color:var(--ink-muted)}.answered-count{font-weight:600;color:var(--ink);font-variant-numeric:tabular-nums}.answered-total{color:var(--ink-subtle)}.result-container,.reading-result-container,.listening-result-container{max-width:720px;margin:0 auto;padding:var(--space-12) var(--space-6)}.result-header{text-align:center;margin-bottom:var(--space-10)}.result-header h1{font-size:var(--text-3xl);font-weight:600;color:var(--ink);letter-spacing:-.025em;margin:0 0 var(--space-3)}.result-header p{font-size:var(--text-lg);color:var(--ink-muted)}.result-icon,.result-icon-large{display:inline-flex;align-items:center;justify-content:center;width:64px;height:64px;background:var(--color-terracotta-ghost);border-radius:var(--r-md);margin-bottom:var(--space-5)}.result-icon-large{width:80px;height:80px}.score-card{background:linear-gradient(135deg,#ffffffe6,#faf8f5f2);border:1px solid rgba(255,255,255,.5);box-shadow:0 4px 16px #0000000f,inset 0 1px #fffc;border-radius:var(--r-md);padding:var(--space-8);text-align:center;margin-bottom:var(--space-8)}.score-display{font-size:var(--text-4xl);font-weight:700;letter-spacing:-.03em;margin:var(--space-3) 0}.score-label{font-size:var(--text-sm);color:var(--ink-subtle);text-transform:uppercase;letter-spacing:.04em}.cefr-badge{display:inline-flex;align-items:center;gap:var(--space-2);padding:6px 16px;background:var(--terracotta);color:#fff;border-radius:var(--r-pill);font-size:var(--text-sm);font-weight:600;margin-top:var(--space-3)}.result-actions{display:flex;gap:var(--space-4);justify-content:center;flex-wrap:wrap;margin-top:var(--space-10)}.back-link{display:inline-flex;align-items:center;gap:var(--space-2);font-size:var(--text-sm);color:var(--ink-muted);text-decoration:none;transition:color var(--t-snap)}.back-link:hover{color:var(--ink)}.feedback-sections{display:flex;flex-direction:column;gap:var(--space-6);margin-top:var(--space-8)}.feedback-card{background:var(--paper-warm);border:1px solid var(--taupe-line);border-radius:var(--r-md);padding:var(--space-6)}.feedback-title{font-size:var(--text-lg);font-weight:600;color:var(--ink);margin:0 0 var(--space-4);letter-spacing:-.01em}.feedback-content{font-size:var(--text-base);line-height:1.7;color:var(--ink-muted)}.feedback-paragraph{margin:0 0 var(--space-3)}.feedback-list-item{padding-left:var(--space-4);margin-bottom:var(--space-2);position:relative}.feedback-list-item:before{content:"·";position:absolute;left:0;color:var(--terracotta);font-weight:700}.bonus-banner{display:flex;align-items:center;gap:var(--space-4);padding:var(--space-5) var(--space-6);background:#64946b14;border:1px solid oklch(62% .08 148 / .2);border-radius:var(--r-md);margin-bottom:var(--space-8)}.bonus-icon{font-size:1.5rem}.bonus-title{font-size:var(--text-sm);font-weight:600;color:var(--color-sage)}.bonus-message{font-size:var(--text-sm);color:var(--ink-muted)}.bonus-points{margin-left:auto;font-size:var(--text-xl);font-weight:700;color:var(--color-sage)}.score-circle{position:relative;width:120px;height:120px;margin:0 auto var(--space-6)}.score-ring{width:100%;height:100%;transform:rotate(-90deg)}.score-ring-bg{fill:none;stroke:var(--taupe-line);stroke-width:6}.score-ring-progress{fill:none;stroke-width:6;stroke-linecap:round;transition:stroke-dasharray .8s var(--spring-smooth)}.score-text{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center}.score-number{font-size:var(--text-2xl);font-weight:700;color:var(--ink);letter-spacing:-.02em}.score-percent{font-size:var(--text-sm);color:var(--ink-subtle)}.score-message{text-align:center;font-size:var(--text-xl);font-weight:600;margin-bottom:var(--space-6)}.tips-card,.tips-section{background:var(--paper-warm);border:1px solid var(--taupe-line);border-radius:var(--r-md);padding:var(--space-6);margin-top:var(--space-8)}.tips-card h3,.tips-section h3{font-size:var(--text-lg);font-weight:600;color:var(--ink);margin:0 0 var(--space-4)}.tips-card ul,.tips-section ul{list-style:none;padding:0;margin:0}.tips-card li,.tips-section li{padding:var(--space-2) 0 var(--space-2) var(--space-5);position:relative;font-size:var(--text-sm);color:var(--ink-muted);line-height:1.6}.tips-card li:before,.tips-section li:before{content:"→";position:absolute;left:0;color:var(--terracotta)}.part-badge{display:inline-flex;align-items:center;padding:4px 12px;background:var(--color-terracotta-ghost);color:var(--terracotta);border-radius:var(--r-pill);font-size:var(--text-xs);font-weight:600;letter-spacing:.04em;text-transform:uppercase;margin-bottom:var(--space-4)}.part-title{font-size:var(--text-xl);font-weight:600;color:var(--ink);letter-spacing:-.015em;margin:0 0 var(--space-5)}.part-description{font-size:var(--text-sm);color:var(--ink-subtle);margin-bottom:var(--space-6);line-height:1.6}.question-block{padding:var(--space-5);background:var(--paper-warm);border:1px solid var(--taupe-line);border-radius:var(--r-sm);margin-bottom:var(--space-4);transition:border-color var(--t-snap)}.question-block:hover{border-color:var(--ink-subtle)}.question-block.answered{border-color:var(--color-sage);background:#64946b0d}.question-header{display:flex;flex-direction:column;gap:var(--space-2);margin-bottom:var(--space-4)}.question-number{font-size:var(--text-xs);font-weight:600;color:var(--terracotta);text-transform:uppercase;letter-spacing:.04em}.question-prompt{font-size:var(--text-base);color:var(--ink);line-height:1.6;margin:0}.options-grid{display:flex;flex-wrap:wrap;gap:var(--space-2)}.option-btn{padding:8px 16px;border:1px solid var(--taupe-line);border-radius:var(--r-sm);background:var(--paper);color:var(--ink-muted);font-size:var(--text-sm);font-weight:500;cursor:pointer;transition:all var(--t-snap)}.option-btn:hover{border-color:var(--ink-subtle);color:var(--ink)}.option-btn.selected{background:var(--terracotta);border-color:var(--terracotta);color:#fff}.radio-options{display:flex;flex-direction:column;gap:var(--space-3)}.radio-label{display:flex;align-items:flex-start;gap:var(--space-3);padding:var(--space-3) var(--space-4);border:1px solid var(--taupe-line);border-radius:var(--r-sm);cursor:pointer;transition:all var(--t-snap);font-size:var(--text-sm);color:var(--ink-muted)}.radio-label:hover{border-color:var(--ink-subtle);background:var(--paper-warm)}.radio-label input[type=radio]{margin-top:2px;accent-color:var(--terracotta)}.radio-label:has(input:checked){border-color:var(--terracotta);background:var(--color-terracotta-ghost);color:var(--ink)}.choice-key{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;background:var(--paper-warm);border:1px solid var(--taupe-line);border-radius:var(--r-xs);font-size:var(--text-xs);font-weight:600;color:var(--ink-muted);flex-shrink:0}.answered-pill{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;background:var(--color-sage);color:#fff;border-radius:50%;flex-shrink:0}.input-hint{font-size:var(--text-xs);color:var(--ink-subtle);margin-top:var(--space-2)}.confirm-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:1000;padding:var(--space-6);animation:fadeIn .2s var(--spring-smooth)}.confirm-modal{background:var(--paper);border:1px solid var(--taupe-line);border-radius:var(--r-lg);padding:var(--space-8);max-width:420px;width:100%;box-shadow:var(--shadow-xl);animation:fadeInUp .25s var(--spring-smooth)}.confirm-modal h3{font-size:var(--text-xl);font-weight:600;color:var(--ink);margin:0 0 var(--space-3)}.confirm-modal p{font-size:var(--text-base);color:var(--ink-muted);margin:0 0 var(--space-6);line-height:1.6}.confirm-actions{display:flex;gap:var(--space-3);justify-content:flex-end}.fs-hint{padding:var(--space-3) var(--space-5);background:var(--paper-warm);border:1px solid var(--taupe-line);border-radius:var(--r-sm);font-size:var(--text-sm);color:var(--ink-muted);margin-bottom:var(--space-6);text-align:center}.link-button{background:none;border:none;color:var(--terracotta);font-weight:500;cursor:pointer;text-decoration:underline;font-family:inherit;font-size:inherit}.submit-error-banner{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);padding:var(--space-3) var(--space-5);background:#ce6f7014;border:1px solid oklch(65% .12 20 / .2);border-radius:var(--r-sm);color:var(--color-soft-coral);font-size:var(--text-sm);margin-bottom:var(--space-5)}.resume-card{background:var(--paper-warm);border:1px solid var(--taupe-line);border-radius:var(--r-md);padding:var(--space-6);margin-top:var(--space-6);text-align:center}.resume-card p{font-size:var(--text-base);color:var(--ink-muted);margin:0 0 var(--space-5)}.resume-actions{display:flex;gap:var(--space-3);justify-content:center;flex-wrap:wrap}[data-theme=dark] .question-card,[data-theme=dark] .score-card,[data-theme=dark] .feedback-card,[data-theme=dark] .tips-card,[data-theme=dark] .tips-section,[data-theme=dark] .question-block,[data-theme=dark] .resume-card,[data-theme=dark] .confirm-modal{background:#ffffff0a;background:color-mix(in oklch,white 4%,transparent);border-color:#ffffff1a;box-shadow:inset 0 1px #ffffff0f,var(--shadow-sm)}[data-theme=dark] .topic-box{background:#ffffff08;border-color:#ffffff14}[data-theme=dark] textarea,[data-theme=dark] .text-input,[data-theme=dark] input[type=text],[data-theme=dark] .option-btn,[data-theme=dark] .radio-label{background:#16100c;border-color:var(--taupe-line);color:var(--ink)}[data-theme=dark] .radio-label:has(input:checked){background:#c26b4c26;border-color:var(--terracotta)}[data-theme=dark] .option-btn.selected{background:var(--terracotta);border-color:var(--terracotta)}[data-theme=dark] .submit-bar,[data-theme=dark] .fs-hint{background:#ffffff08;border-color:#ffffff14}[data-theme=dark] .draft-notice{background:#c26b4c1f;border-color:#c26b4c33}[data-theme=dark] .ocr-error-banner,[data-theme=dark] .submit-error-banner{background:#ce6f701f;border-color:#ce6f7040}[data-theme=dark] .bonus-banner{background:#64946b1f;border-color:#64946b40}[data-theme=dark] .confirm-modal-backdrop{background:#0009}.test-session{display:flex;flex-direction:column;flex:1;min-height:0;height:100%;max-height:100%;overflow:hidden;background:var(--paper)}.test-session-toolbar{flex-shrink:0;z-index:30;background:var(--paper-warm);border-bottom:1px solid var(--taupe-line);box-shadow:var(--shadow-sm)}.test-session-toolbar-row{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);padding:var(--space-3) var(--space-5);flex-wrap:wrap}.test-session-toolbar-title h1{font-size:var(--text-lg);font-weight:600;color:var(--ink);margin:0;letter-spacing:-.02em}.test-session-toolbar-meta{font-size:var(--text-xs);color:var(--ink-subtle);font-weight:500}.test-session-timer{text-align:center;padding:var(--space-2) var(--space-4);border-radius:var(--r-sm);border:1px solid var(--taupe-line);background:var(--paper);min-width:110px}.test-session-timer .timer-label{font-size:.65rem;margin-bottom:2px}.test-session-timer .timer-display{font-size:var(--text-xl)}.test-session-progress-row{display:flex;align-items:center;gap:var(--space-4);padding:0 var(--space-5) var(--space-3)}.test-session-progress-bar{flex:1;height:6px;background:var(--taupe-line);border-radius:var(--r-pill);overflow:hidden}.test-session-progress-fill{height:100%;border-radius:var(--r-pill);transition:width .35s var(--spring-smooth)}.reading-test-page .test-session-progress-fill{background:linear-gradient(90deg,var(--color-sage),oklch(72% .1 148))}.listening-test-page .test-session-progress-fill{background:linear-gradient(90deg,var(--color-warm-amber),var(--terracotta))}.test-session-progress-text{font-size:var(--text-xs);color:var(--ink-muted);font-weight:600;font-variant-numeric:tabular-nums;white-space:nowrap}.test-session-part-nav{display:flex;gap:var(--space-2);padding:0 var(--space-5) var(--space-3);overflow-x:auto;scrollbar-width:none}.test-session-part-nav::-webkit-scrollbar{display:none}.part-nav-btn{display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);border:1px solid var(--taupe-line);border-radius:var(--r-pill);background:var(--paper);color:var(--ink-muted);font-size:var(--text-sm);font-weight:600;cursor:pointer;transition:all var(--t-snap);white-space:nowrap;flex-shrink:0}.part-nav-btn:hover{border-color:var(--ink-subtle);color:var(--ink)}.part-nav-btn.active{color:#fff;border-color:transparent;box-shadow:var(--shadow-sm)}.reading-test-page .part-nav-btn.active{background:var(--color-sage)}.listening-test-page .part-nav-btn.active{background:var(--color-warm-amber);color:var(--ink)}.part-nav-btn.complete:not(.active){border-color:#64946b59;background:#64946b14}.part-nav-count{font-size:var(--text-xs);font-weight:500;opacity:.85;font-variant-numeric:tabular-nums}.part-nav-btn.playing .part-nav-count:after{content:" ♪"}.test-session-alerts{flex-shrink:0;padding:0 var(--space-5)}.test-session-alerts .submit-error-banner,.test-session-alerts .fs-hint{margin-bottom:var(--space-3)}.test-session-body{flex:1;min-height:0;overflow:hidden;display:flex;flex-direction:column}.test-session-question-nav{flex-shrink:0;display:flex;gap:var(--space-1);padding:var(--space-2) var(--space-5);overflow-x:auto;border-bottom:1px solid var(--taupe-line);background:var(--paper);scrollbar-width:thin}.question-jump-btn{width:32px;height:32px;border-radius:var(--r-sm);border:1px solid var(--taupe-line);background:var(--paper-warm);color:var(--ink-muted);font-size:var(--text-xs);font-weight:600;cursor:pointer;transition:all var(--t-snap);flex-shrink:0}.question-jump-btn:hover{border-color:var(--ink-subtle);color:var(--ink)}.question-jump-btn.answered{border-color:#64946b66;background:#64946b1a;color:var(--color-sage)}.question-jump-btn.current{box-shadow:inset 0 0 0 2px currentColor}.reading-test-page .question-jump-btn.current{color:var(--color-sage)}.listening-test-page .question-jump-btn.current{color:var(--color-warm-amber)}.test-session-footer{flex-shrink:0;z-index:30;display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);padding:var(--space-3) var(--space-5);background:var(--paper-warm);border-top:1px solid var(--taupe-line);box-shadow:0 -4px 24px #0000000f}.test-session-footer .answered-indicator{font-size:var(--text-sm)}.test-session-footer .btn-submit{padding:12px 32px;font-size:var(--text-base)}.test-session-audio-dock{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-5) var(--space-3);border-bottom:1px solid var(--taupe-line);background:var(--paper)}.test-session-audio-dock-label{font-size:var(--text-xs);font-weight:600;color:var(--ink-subtle);text-transform:uppercase;letter-spacing:.06em}[data-theme=dark] .test-session-toolbar,[data-theme=dark] .test-session-footer{background:#ffffff08;border-color:#ffffff14}[data-theme=dark] .test-session-timer,[data-theme=dark] .part-nav-btn,[data-theme=dark] .question-jump-btn{background:#16100c;border-color:var(--taupe-line)}@media(max-width:768px){.test-header,.reading-test-header,.listening-test-header{flex-direction:column;gap:var(--space-4)}.timer-box{align-items:flex-start}.result-actions{flex-direction:column}.result-actions .btn,.result-actions a.btn{width:100%}.submit-bar{flex-direction:column;align-items:stretch}.submit-bar .btn-submit{width:100%}.confirm-actions{flex-direction:column}.confirm-actions .btn{width:100%}.resume-actions{flex-direction:column}.resume-actions .btn{width:100%}.test-session-toolbar-row{padding:var(--space-3) var(--space-4)}.test-session-progress-row,.test-session-part-nav,.test-session-question-nav,.test-session-audio-dock{padding-left:var(--space-4);padding-right:var(--space-4)}.test-session-footer{flex-direction:column;align-items:stretch;padding:var(--space-4)}.test-session-footer .btn-submit{width:100%}}.ft-section-start{display:flex;flex-direction:column;align-items:center;text-align:center;gap:var(--space-3);max-width:28rem;margin:0 auto}.ft-section-start h1{margin:0;font-size:var(--text-2xl);font-weight:650;letter-spacing:-.02em;color:var(--ink);display:flex;align-items:center;gap:var(--space-2);justify-content:center}.ft-section-start .start-subtitle,.ft-section-start p{margin:0;color:var(--ink-muted);font-size:var(--text-sm);line-height:1.5}.ft-section-start .start-subtitle--muted{color:var(--ink-subtle);font-size:var(--text-xs)}.ft-exam-badge{display:inline-flex;align-items:center;margin:0;padding:.2rem .65rem;border-radius:var(--r-pill, 999px);background:color-mix(in oklch,var(--terracotta) 12%,transparent);border:1px solid color-mix(in oklch,var(--terracotta) 32%,transparent);color:var(--terracotta);font-size:.6875rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;line-height:1.2}.ft-audio-once-note{margin:.25rem 0 .75rem;padding:.45rem .75rem;border-radius:var(--r-sm);background:color-mix(in oklch,var(--paper-warm, #f5f0ea) 80%,transparent);border:1px solid var(--taupe-line);font-size:var(--text-xs);color:var(--ink-subtle);line-height:1.4}.test-session--exam .test-session-toolbar-title h1,.writing-test-page--exam .test-title h1{display:flex;flex-wrap:wrap;align-items:center;gap:.4rem .5rem}.test-session--exam .test-session-toolbar-meta,.writing-test-page--exam .test-subtitle{display:flex;flex-wrap:wrap;align-items:center;gap:.35rem .5rem}.ft-meta-dot{opacity:.45;-webkit-user-select:none;user-select:none}.speaking-test-header .ft-exam-badge{margin-left:auto;flex-shrink:0}.reading-result-page,.listening-result-page,.writing-result-page,.speaking-result-page,.full-test-result,.modern-result,.receptive-result-page,.placement-result-page,.ielts-full-result-page,.reading-result-page.landing,.writing-result-page.landing,.speaking-result-page.landing,.full-test-result.landing,.modern-result.landing{--lx-canvas: oklch(97.6% .004 85);--lx-canvas-deep: oklch(94.6% .005 85);--lx-paper: oklch(99.3% .002 85);--lx-ink-band: oklch(15.5% .012 60);--lx-ink: oklch(17% .012 60);--lx-ink-2: oklch(40% .012 60);--lx-ink-3: oklch(53% .01 60);--lx-ink-on-dark: oklch(95% .004 85);--lx-ink-2-on-dark: oklch(78% .006 80);--lx-line: oklch(87% .007 80);--lx-rule: var(--lx-ink);--lx-accent: oklch(63% .21 38);--lx-accent-deep: oklch(55% .2 40);--lx-accent-soft: oklch(63% .21 38 / .11);--lx-ink-on-accent: oklch(16% .012 60);--lx-good: oklch(50% .13 152);--lx-warn: oklch(62% .14 70);--lx-bad: oklch(53% .19 27);--lx-shadow-hard: 5px 5px 0 0 var(--lx-ink);--lx-shadow-hard-sm: 3px 3px 0 0 var(--lx-ink);--lx-shadow-soft: 0 14px 40px oklch(17% .012 60 / .08);--lx-display: "Bricolage Grotesque Variable", system-ui, sans-serif;--lx-body: "Hanken Grotesk Variable", system-ui, sans-serif;--lx-mono: "Space Mono", ui-monospace, monospace;--lx-chip: 999px;--speaking-bg: var(--lx-canvas);--speaking-surface: var(--lx-paper);--speaking-border: var(--lx-line);--speaking-text: var(--lx-ink);--speaking-text-muted: var(--lx-ink-2);--speaking-accent: var(--lx-accent);--speaking-accent-light: var(--lx-accent-soft);background:var(--lx-canvas);color:var(--lx-ink-2)}html[data-theme=dark] .reading-result-page,html[data-theme=dark] .listening-result-page,html[data-theme=dark] .writing-result-page,html[data-theme=dark] .speaking-result-page,html[data-theme=dark] .full-test-result,html[data-theme=dark] .modern-result,html[data-theme=dark] .receptive-result-page,html[data-theme=dark] .placement-result-page,html[data-theme=dark] .ielts-full-result-page{--lx-canvas: oklch(14% .008 70);--lx-canvas-deep: oklch(17% .01 70);--lx-paper: oklch(19% .01 70);--lx-ink-band: oklch(10% .01 65);--lx-ink: oklch(94% .004 85);--lx-ink-2: oklch(77% .007 80);--lx-ink-3: oklch(62% .008 80);--lx-line: oklch(26% .01 70);--lx-rule: oklch(45% .01 70);--lx-accent: oklch(70% .19 40);--lx-accent-deep: oklch(76% .17 42);--lx-accent-soft: oklch(70% .19 40 / .16);--lx-good: oklch(66% .14 152);--lx-warn: oklch(75% .13 75);--lx-bad: oklch(66% .18 27);--lx-shadow-hard: 5px 5px 0 0 oklch(0% 0 0 / .9);--lx-shadow-hard-sm: 3px 3px 0 0 oklch(0% 0 0 / .9);--lx-shadow-soft: 0 14px 40px oklch(0% 0 0 / .45)}.reading-result-page,.reading-result-page *,.writing-result-page,.writing-result-page *,.speaking-result-page,.speaking-result-page *,.listening-result-page,.listening-result-page *,.full-test-result,.full-test-result *,.modern-result,.modern-result *,.receptive-result-page,.receptive-result-page *,.placement-result-page,.placement-result-page *,.ielts-full-result-page,.ielts-full-result-page *{border-radius:0!important}.modern-result .mr-badge,.modern-result .mr-count-badge,.modern-result .mr-cefr-badge,.modern-result .mr-target,.modern-result .mr-list--strengths li:before,.modern-result .mr-tip-number,.modern-result .mr-loading-spinner,.speaking-result-page .spinner,.writing-result-page .spinner,.reading-result-page .spinner,.listening-result-page .spinner,.full-test-result .spinner,.modern-result .spinner{border-radius:var(--lx-chip, 999px)!important}[class*=result] .glass,[class*=result] [class*=glass]{background:var(--lx-paper)!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important;border:1.5px solid var(--lx-ink)!important;box-shadow:var(--lx-shadow-hard-sm)!important}[class*=result] .result-header,.speaking-result-page .speaking-result-header,.writing-result-page .writing-result-header,.reading-result-page .reading-result-header{background:var(--lx-paper)!important;border-bottom:1.5px solid var(--lx-rule)!important;-webkit-backdrop-filter:none!important;backdrop-filter:none!important}[class*=result] .result-header h1,[class*=result] .result-header h2{font-family:var(--lx-display)!important;font-weight:800!important;letter-spacing:-.03em!important;color:var(--lx-ink)!important}[class*=result] .result-card,.speaking-result-page .speaking-result-card,.writing-result-page .writing-result-card,.reading-result-page .reading-result-card{background:var(--lx-paper)!important;border:1.5px solid var(--lx-ink)!important;box-shadow:var(--lx-shadow-hard-sm)!important}[class*=result] .result-score,[class*=result] .band-score{font-family:var(--lx-mono)!important;font-variant-numeric:tabular-nums!important;letter-spacing:-.02em!important}[class*=result] .btn-primary,[class*=result] .result-cta{background:var(--lx-accent)!important;color:var(--lx-ink-on-accent)!important;border:1.5px solid var(--lx-ink)!important;box-shadow:var(--lx-shadow-hard-sm)!important;font-weight:700!important}[class*=result] .btn-primary:hover{transform:translate(-1px,-1px);box-shadow:4px 4px 0 0 var(--lx-ink)!important}
