@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+TC:wght@400;500;600;700;800;900&display=swap');:root{color-scheme:light;--navy:#06264c;--blue:#0875bc;--teal:#087e91;--muted:#526781;--line:#dbe5ef;--surface:#f1f6fb;--white:#fff;--error:#a5212c;--radius:18px}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:100px}body{margin:0;color:var(--navy);background:var(--white);font-family:Arial,Helvetica,'Noto Sans TC',sans-serif;font-size:16px;line-height:1.7}a{color:inherit;text-decoration:none}button,input,select{font:inherit}a:focus-visible,button:focus-visible{outline:3px solid var(--blue);outline-offset:4px}header{height:104px;display:flex;align-items:center;justify-content:space-between;padding:12px 4%;gap:24px;background:var(--white);border-bottom:1px solid var(--line)}.brand img{width:210px;height:76px;object-fit:contain}nav{display:flex;gap:32px;font-weight:600;white-space:nowrap}nav a:hover,.text-link:hover{color:var(--blue)}.button{display:inline-flex;align-items:center;justify-content:center;background:var(--navy);color:var(--white);border:0;border-radius:100px;padding:16px 32px;font-weight:700;cursor:pointer;min-height:52px;text-align:center;transition:background .2s}.button:hover{background:var(--blue)}.button:disabled{opacity:.6;cursor:wait}.menu{display:none}.hero{position:relative;min-height:610px;overflow:hidden;display:flex;align-items:center}.hero-photo{position:absolute;width:100%;height:100%;object-fit:cover;object-position:center}.hero-content{position:relative;width:62%;padding:64px 4%;background:linear-gradient(90deg,rgba(255,255,255,.97),rgba(255,255,255,.65) 75%,transparent)}.eyebrow{font-size:16px;font-weight:600;color:var(--teal);letter-spacing:.08em;margin:0 0 18px}.hero h1{font-size:clamp(40px,4.9vw,78px);line-height:1.35;font-weight:900;letter-spacing:-.03em;margin:12px 0 22px}.hero h1 span{color:var(--blue)}.hero-sub{font-size:clamp(18px,1.65vw,25px);font-weight:600}.hero-actions{display:flex;align-items:center;gap:32px;margin-top:32px}.hero-actions>.button{font-size:24px;padding:18px 52px}.trust{border-left:1px solid var(--line);padding-left:28px;margin:0;line-height:1.35}.trust strong{display:block;font-size:42px;color:var(--teal)}.trust span{font-weight:600;font-size:18px}.benefits{display:grid;grid-template-columns:repeat(3,1fr);padding:35px 4%;border-bottom:1px solid var(--line);gap:24px}.benefits>div{display:flex;align-items:center;gap:24px;padding-left:20px}.benefits>div+div{border-left:1px solid var(--line)}.glyph{font-size:32px;font-weight:800;color:var(--blue)}.benefits p{margin:0}.benefits strong{font-size:21px;display:block}.benefits p span{display:block;color:var(--muted)}.section{padding:80px 5%}.section-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:30px;gap:20px}h2{font-size:36px;line-height:1.4;margin:0 0 16px}h3{font-size:23px;line-height:1.5;margin:12px 0}p{margin:12px 0}.text-link{color:var(--blue);text-decoration:underline;text-underline-offset:7px;font-weight:600}.course-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:28px;max-width:1120px}.course-card{display:grid;grid-template-columns:40% 60%;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;transition:box-shadow .2s}.course-card:hover{box-shadow:0 12px 32px #06264c16}.course-card>img{width:100%;height:100%;min-height:270px;object-fit:cover}.course-body{padding:28px}.course-body .eyebrow{font-size:14px}.meta{font-size:15px;color:var(--muted)}.story{background:var(--surface);display:grid;grid-template-columns:1fr 1.3fr;gap:8%;font-size:19px}.story h2{font-size:44px}.closing{padding:72px 5%;background:var(--navy);color:var(--white);text-align:center}.closing h2{font-size:42px}.light{background:var(--white);color:var(--navy);margin-top:20px}.light:hover{color:var(--white)}footer{padding:40px 5%;display:grid;grid-template-columns:1fr 1fr;gap:8px 32px;font-size:14px;color:var(--muted)}footer img{width:180px;max-height:65px;object-fit:contain}footer>div{display:flex;gap:20px;flex-wrap:wrap}.page-title{font-size:44px;line-height:1.4;margin:0 0 20px}.intro{color:var(--muted);max-width:750px;margin-bottom:40px;font-size:18px}.plan-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px}.plan-card{display:flex;flex-direction:column;padding:32px;border:1px solid var(--line);border-radius:var(--radius);min-height:390px}.plan-card.trial{border:2px solid var(--blue);background:var(--surface)}.plan-card h2{font-size:26px}.plan-card .price{font-size:34px;font-weight:800}.plan-card .button{margin-top:auto}.plan-card ul{padding-left:22px;margin-bottom:28px}.error{color:var(--error)}.booking-layout{display:grid;grid-template-columns:.85fr 1.15fr;gap:6%}.service-image{width:100%;max-height:300px;object-fit:cover;border-radius:var(--radius)}.booking-panel{border:1px solid var(--line);padding:30px;border-radius:var(--radius)}.booking-note{background:var(--surface);padding:22px;margin-top:28px;border-radius:var(--radius)}.pager,.days,.times{display:flex;gap:10px;flex-wrap:wrap;margin:16px 0}.days{flex-wrap:nowrap;overflow:auto}.chip{border:1px solid var(--line);background:var(--white);color:var(--navy);padding:10px 18px;border-radius:10px;cursor:pointer;white-space:nowrap}.chip.selected{background:var(--navy);color:var(--white)}.time{padding:8px 15px;background:var(--surface);border-radius:8px}.disabled{opacity:.5;text-decoration:line-through}.mobile-only{display:none}@media(min-width:1600px){.hero{min-height:700px}}@media(max-width:1100px){nav{gap:16px;font-size:14px}.brand img{width:170px}.hero-content{width:67%}.hero h1{font-size:52px}.hero-actions>.button{font-size:20px;padding:16px 32px}.benefits strong{font-size:18px}.plan-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.course-card{display:block}.course-card>img{height:220px;min-height:0}}@media(max-width:760px){header{height:82px;padding:8px 5%}.brand img{width:155px;height:60px}.header-cta{padding:10px 18px;min-height:42px;font-size:14px}.menu{display:block;border:0;background:var(--surface);padding:8px 12px;border-radius:8px;font-size:14px}nav{display:none;position:absolute;top:82px;left:0;right:0;z-index:20;padding:22px 6%;background:var(--white);box-shadow:0 8px 20px #06264c18}nav.open{display:grid;gap:18px;font-size:16px}.hero{min-height:740px;align-items:start;padding-top:290px}.hero-photo{height:370px;object-position:78% center;top:0;object-fit:cover}.hero-content{width:100%;background:linear-gradient(0deg,#fff 82%,rgba(255,255,255,0));padding:55px 6% 35px}.hero h1{font-size:40px}.hero-sub{font-size:18px}.eyebrow{font-size:14px}.mobile-only{display:block}.hero-actions{gap:22px}.hero-actions>.button{padding:14px 28px;font-size:20px}.trust{padding-left:20px}.trust strong{font-size:30px}.trust span{font-size:14px}.benefits{display:block;padding:15px 6%}.benefits>div{padding:18px 0;gap:25px}.benefits>div+div{border-left:0;border-top:1px solid var(--line)}.benefits strong{font-size:19px}.benefits p span{font-size:15px}.section{padding:50px 6%}.section-head{align-items:start;flex-direction:column}.section h2{font-size:30px}.course-grid,.story,.plan-grid,.booking-layout{grid-template-columns:1fr}.course-card{display:grid;grid-template-columns:34% 66%}.course-card>img{height:100%;min-height:240px}.course-body{padding:22px 18px}.course-body h3{font-size:21px}.story{gap:20px;font-size:17px}.story h2{font-size:34px}.closing{padding:50px 6%}.closing h2{font-size:30px}footer{grid-template-columns:1fr;padding:32px 6%}.page-title{font-size:34px}.booking-panel{padding:22px;margin-top:30px}.plan-card{padding:26px;min-height:350px}.intro{font-size:16px}.booking-note .button{width:100%;padding:14px 18px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important}}
.reading{max-width:800px;font-size:19px}.about-photo{width:100%;height:340px;object-fit:cover;object-position:right;border-radius:18px}.feature-grid,.review-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px;margin-top:36px}.feature-grid article,.review-card{margin:0;padding:30px;border:1px solid var(--line);border-radius:18px;background:var(--white)}.feature-grid h2{font-size:26px}.review-card blockquote{margin:0 0 28px;font-size:18px}.review-card figcaption{display:flex;flex-direction:column}.review-card figcaption span{font-size:14px;color:var(--muted)}.faq-list{max-width:950px}.faq-list details{border-bottom:1px solid var(--line);padding:22px 0}.faq-list summary{font-size:20px;font-weight:700;cursor:pointer;padding:6px}.faq-list summary:focus-visible{outline:3px solid var(--blue)}.faq-list details p{padding:8px 6px;max-width:850px;color:var(--muted)}.resource-list{max-width:850px}.resource-list article{padding:32px 0;border-bottom:1px solid var(--line)}.example{background:var(--surface);padding:24px;border-left:4px solid var(--blue);font-family:inherit;letter-spacing:normal}nav a[aria-current]{color:var(--blue)}@media(max-width:1000px){.feature-grid,.review-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:760px){.feature-grid,.review-grid{grid-template-columns:1fr}.about-photo{height:260px}.reading{font-size:17px}.faq-list summary{font-size:18px}}
.course-visual{display:flex;flex-direction:column;align-items:center;justify-content:center;background:linear-gradient(140deg,#dfeffa,#f6f9fc);min-height:250px;color:var(--blue)}.course-visual strong{font-size:72px;line-height:1.2}.course-visual span{font-weight:600}@media(max-width:1100px){.course-visual{min-height:200px}}@media(max-width:760px){.course-visual{min-height:240px}.course-visual strong{font-size:48px}.course-visual span{font-size:12px}}/* Shared motion and the two stages of the one-to-one course. */
header{position:sticky;top:0;z-index:30;background:#fffffff5;backdrop-filter:blur(14px)}.hero{min-height:660px}.hero-detail{font-size:18px;color:var(--muted);line-height:1.9}.hero-content{width:65%;padding-top:45px;padding-bottom:50px}.hero-sub{font-size:24px}.credential-line{display:flex;gap:10px;flex-wrap:wrap;margin-top:24px}.credential-line span{padding:8px 13px;border:1px solid #bfd4e6;border-radius:100px;font-size:14px;font-weight:600}.course-grid{display:block;max-width:none}.unified-course{display:block;padding:0;max-width:none}.journey-card{border:1px solid var(--line);border-radius:18px;overflow:hidden}.journey-heading{padding:34px 38px;background:linear-gradient(110deg,#eaf4fb,#f5f9fc)}.journey-heading h3,.journey-heading h2{font-size:32px;margin:0}.journey-heading p{max-width:780px}.course-options{display:grid;grid-template-columns:1fr 1fr;gap:0}.course-options>article{padding:34px 38px}.course-options>article+article{border-left:1px solid var(--line)}.course-options .button{margin-top:16px}.plan-grid{margin-top:35px}.motion-toggle{background:transparent;border:0;color:var(--muted);padding:0;cursor:pointer;text-decoration:underline;text-underline-offset:5px;font-size:14px}.reading-progress{height:3px;background:var(--blue);position:fixed;top:0;left:0;width:100%;transform:scaleX(0);transform-origin:left;z-index:99;pointer-events:none}.button{position:relative;overflow:hidden;transition:background .25s,transform .25s,box-shadow .25s}.button:hover{transform:translateY(-3px);box-shadow:0 8px 18px #06264c20}.button:active{transform:translateY(0) scale(.98)}.button::after{content:'';position:absolute;inset:-40% -80%;background:linear-gradient(100deg,transparent 42%,#ffffff26 50%,transparent 58%);transform:translateX(-90%);pointer-events:none}.button:hover::after{animation:button-sheen .7s ease}.feature-grid article,.review-card,.plan-card{transition:transform .3s,box-shadow .3s,border-color .3s}.feature-grid article:hover,.review-card:hover,.plan-card:hover{transform:translateY(-6px);box-shadow:0 18px 40px #06264c12;border-color:#99bfdc}.hero-content>*{animation:rise-in .8s cubic-bezier(.2,.7,.2,1) both}.hero-content h1{animation-delay:.08s}.hero-content .hero-sub{animation-delay:.16s}.hero-content .hero-detail{animation-delay:.24s}.hero-content .hero-actions{animation-delay:.32s}.hero-photo{transform:translateY(var(--hero-offset,0px)) scale(1.035);transition:transform .1s linear;animation:portrait-enter 1.4s ease both}.hero::after{content:'';position:absolute;bottom:0;left:0;height:3px;width:100%;background:linear-gradient(90deg,#0875bc00,#0875bc80,#87d4e6,#0875bc00);background-size:200% 100%;animation:ambient-line 9s ease-in-out infinite;pointer-events:none}.is-revealed{animation:rise-in .7s cubic-bezier(.2,.7,.2,1) var(--reveal-delay,0ms) both}.faq-list details[open] p{animation:rise-in .35s ease}.faq-list summary{transition:color .2s}.faq-list summary:hover,.faq-list details[open] summary{color:var(--blue)}nav a{position:relative}nav a::after{content:'';height:2px;position:absolute;bottom:-7px;left:0;width:100%;background:var(--blue);transform:scaleX(0);transform-origin:left;transition:transform .25s}nav a:hover::after,nav a[aria-current]::after{transform:scaleX(1)}@view-transition{navigation:auto}::view-transition-old(root){animation:page-out .2s ease}::view-transition-new(root){animation:page-in .3s ease}@keyframes rise-in{from{opacity:0;transform:translateY(22px)}to{opacity:1;transform:translateY(0)}}@keyframes portrait-enter{from{opacity:.65;filter:blur(3px)}to{opacity:1;filter:blur(0)}}@keyframes button-sheen{to{transform:translateX(90%)}}@keyframes ambient-line{0%,100%{background-position:0 50%}50%{background-position:100% 50%}}@keyframes page-out{to{opacity:0}}@keyframes page-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}body[data-motion='off'] *,body[data-motion='off'] *::after{animation:none!important;transition:none!important}body[data-motion='off'] .hero-photo{transform:none}body[data-motion='off'] .button:hover,body[data-motion='off'] .feature-grid article:hover,body[data-motion='off'] .review-card:hover,body[data-motion='off'] .plan-card:hover{transform:none}.motion-toggle:focus-visible{outline:3px solid var(--blue);outline-offset:5px}@media(max-width:1100px){.hero-content{width:70%}.hero-sub{font-size:20px}.hero-detail{font-size:16px}}@media(max-width:760px){.hero{min-height:840px}.hero-content{width:100%;padding:55px 6% 38px}.hero-content h1{font-size:38px}.hero-sub{font-size:19px}.hero-detail{font-size:16px}.hero-actions{gap:18px}.hero-actions>.button{font-size:19px;padding:14px 24px}.course-options{grid-template-columns:1fr}.course-options>article{padding:28px 24px}.course-options>article+article{border-left:0;border-top:1px solid var(--line)}.journey-heading{padding:28px 24px}.journey-heading h3,.journey-heading h2{font-size:28px}.credential-line{gap:8px}.hero-photo{transform:none}.hero .eyebrow{letter-spacing:.02em}}@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}.hero-photo{transform:none}::view-transition-old(root),::view-transition-new(root){animation:none!important}}
/* Keep the portrait's head inside the frame on wide displays. */
.hero-photo{object-position:center top;transform:none;transition:opacity .3s}.about-photo{object-position:right top}@media(min-width:761px){.hero{min-height:max(660px,36vw)}}@media(max-width:760px){.hero-photo{object-position:78% top}}
@media(min-width:761px){.hero-photo{width:72%;height:100%;right:0;top:0;object-fit:contain;object-position:right bottom}.about-photo{height:auto;aspect-ratio:1672/941;object-fit:contain}}
.brand-logo{position:relative;display:block;width:210px;height:76px}.brand-logo .brand-fallback,.brand-writing{position:absolute;inset:0;width:100%;height:100%;object-fit:contain}.brand-writing{display:none}.motion-ready[data-motion='on'] .brand-writing{display:block}.motion-ready[data-motion='on'] .brand-fallback{visibility:hidden}.pen-stroke{stroke-dasharray:1;stroke-dashoffset:1}.motion-ready[data-motion='on'] .pen-stroke{animation:logo-write var(--pen-duration) linear var(--pen-delay) forwards}.signature-finish{opacity:0}.motion-ready[data-motion='on'] .signature-finish{animation:signature-complete .15s linear 3.3s forwards}@keyframes logo-write{to{stroke-dashoffset:0}}@keyframes signature-complete{to{opacity:1}}.student-login{font-weight:700;font-size:15px;white-space:nowrap;color:var(--blue)}.student-login:hover{text-decoration:underline;text-underline-offset:6px}.login-panel{display:flex;align-items:center;justify-content:space-between;gap:30px;background:var(--surface);border-radius:18px;padding:30px;margin:0 0 35px}.login-panel h2{font-size:26px}.login-panel p{max-width:650px}.login-panel>.button{flex-shrink:0}header{transition:box-shadow .35s,background .35s}header.is-scrolled{box-shadow:0 8px 28px #06264c0f;background:#fffffff9}.hero::after{animation:ambient-line 4.5s ease-in-out 1}.section-head .text-link{transition:transform .3s}.section-head .text-link:hover{transform:translateX(5px)}.feature-grid .glyph{display:inline-block;transition:transform .4s}.feature-grid article:hover .glyph{transform:rotate(-5deg) scale(1.12)}.plan-card .price{transform-origin:left;transition:transform .3s,color .3s}.plan-card:hover .price{transform:scale(1.035);color:var(--blue)}.closing{position:relative;overflow:hidden;background:linear-gradient(120deg,#06264c,#0c3d68);background-size:180% 180%}.closing:has(.is-revealed){animation:closing-wash 4s ease both}.time{animation:slot-in .25s ease both}.chip{transition:background .2s,transform .2s}.chip:hover{transform:translateY(-2px);background:#e8f2fa}.chip.selected:hover{background:var(--navy)}nav.open{animation:menu-open .3s ease both}.faq-list details[open]{border-color:var(--blue)}.hero-content h1 span{display:inline-block;animation:headline-blue 1.8s ease .3s both}@keyframes headline-blue{from{color:#06264c;transform:translateY(5px)}to{color:#0875bc;transform:translateY(0)}}@keyframes slot-in{from{opacity:0;transform:translateY(5px)}to{opacity:1;transform:translateY(0)}}@keyframes menu-open{from{opacity:0;transform:translateY(-12px)}to{opacity:1;transform:translateY(0)}}@keyframes closing-wash{from{background-position:0 50%}to{background-position:100% 50%}}@media(max-width:1100px){.brand-logo{width:170px}}@media(max-width:760px){header{gap:12px}.brand-logo{width:155px;height:60px}.header-cta{display:none}.student-login{margin-left:auto;font-size:14px}.menu{padding:8px}.login-panel{display:block;padding:24px}.login-panel>.button{margin-top:12px}.brand-logo .brand-fallback{width:100%;height:100%}}@media(prefers-reduced-motion:reduce){.brand-writing{display:none!important}.brand-fallback{visibility:visible!important}.hero-content h1 span{animation:none}}
/* Short, ordered motion shared across pages. */
:root{--motion-ease:cubic-bezier(.22,1,.36,1)}.motion-ready[data-motion='on'] .motion-pending{opacity:0}.is-revealed{animation-duration:.48s;animation-timing-function:var(--motion-ease)}.hero-content>*{animation-duration:.62s;animation-timing-function:var(--motion-ease)}.hero-photo{animation-name:portrait-soft;animation-duration:.65s;animation-timing-function:ease-out}@keyframes portrait-soft{from{opacity:0}to{opacity:1}}.hero-content h1 span{animation-duration:.7s}.feature-grid article,.review-card,.plan-card,.button,.chip{transition-duration:.22s;transition-timing-function:var(--motion-ease)}.feature-grid article:hover,.review-card:hover,.plan-card:hover{transform:translateY(-4px)}.button:hover{transform:translateY(-2px)}.button:active{transform:scale(.98)}.button:hover::after{animation-duration:.45s}.course-option,.course-options>article{transition:background .22s ease}.course-option:hover,.course-options>article:hover{background:#f6faff}.plan-card .price{transition-duration:.22s}.faq-list details[open] p{animation-duration:.28s;animation-timing-function:var(--motion-ease)}nav.open{animation-duration:.22s}.time{animation-duration:.18s}.chip.selected{animation:chip-select .18s ease-out}.days{animation:dates-enter .2s ease-out}.text-link{transition:color .18s,text-underline-offset .18s}.text-link:hover{text-underline-offset:9px}.student-login{transition:color .18s}.student-login:active{opacity:.75}header{transition-duration:.24s}::view-transition-old(root){animation-duration:.16s}::view-transition-new(root){animation-duration:.24s}@keyframes chip-select{from{transform:scale(.96)}to{transform:scale(1)}}@keyframes dates-enter{from{opacity:.5;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}body[data-motion='off'] .motion-pending{opacity:1}@media(prefers-reduced-motion:reduce){.motion-pending{opacity:1!important}}
.motion-ready.signature-seen .brand-writing{display:none}.motion-ready.signature-seen .brand-fallback{visibility:visible}.signature-seen .pen-stroke,.signature-seen .signature-finish{animation:none!important}
/* Cinematic page entrances and responsive depth. */
:root{--motion-ease:cubic-bezier(.16,1,.3,1)}.headline-mask{display:block;overflow:hidden;perspective:900px;padding-bottom:.08em;margin-bottom:-.08em}.headline-line{display:block;transform-origin:center bottom}.hero-content h1,.hero-content h1 span{animation:none}.hero h1 span{color:inherit}.hero h1 .headline-line>span{color:var(--blue)}.headline-active .headline-line{animation:headline-unfold 1.15s var(--motion-ease) var(--line-delay,0ms) both}.is-revealed{animation-name:cinematic-rise;animation-duration:.95s;animation-timing-function:var(--motion-ease)}.is-revealed.card-entry{animation-name:card-arrival;animation-duration:1.05s}.hero-content>.eyebrow{animation-duration:.95s}.hero-content>.hero-sub{animation-duration:1.05s;animation-delay:.4s}.hero-content>.hero-detail{animation-duration:1.05s;animation-delay:.6s}.hero-content>.hero-actions{animation-duration:1.1s;animation-delay:.8s}.hero-photo{animation-duration:1.25s;animation-delay:.15s}.benefits{perspective:1200px}.feature-grid,.review-grid,.plan-grid,.course-options{perspective:1400px}.feature-grid article,.review-card,.plan-card{position:relative;isolation:isolate;overflow:hidden;transition:transform .5s var(--motion-ease),box-shadow .5s,border-color .4s,background .4s}.feature-grid article::before,.review-card::before,.plan-card::before{content:'';position:absolute;inset:0;background:radial-gradient(350px circle at var(--spot-x,50%) var(--spot-y,0%),#54b5e427,transparent 65%);opacity:0;transition:opacity .45s;pointer-events:none;z-index:-1}.feature-grid article:hover::before,.review-card:hover::before,.plan-card:hover::before{opacity:1}.feature-grid article:hover,.review-card:hover,.plan-card:hover{box-shadow:0 24px 55px #06264c20;border-color:#73b2da}.plan-card:hover .price{transform:scale(1.08);transition-duration:.45s}.button{transition:transform .4s var(--motion-ease),translate .4s var(--motion-ease),background .3s,box-shadow .4s}.button:hover{transform:translateY(-5px);box-shadow:0 14px 28px #06264c30}.button:hover::after{animation-duration:.8s}.section h2{position:relative}.section-head h2::after,.story h2::after{content:'';display:block;width:82px;height:4px;border-radius:4px;background:linear-gradient(90deg,var(--blue),#69c4e5);margin-top:18px;transform-origin:left}.is-revealed h2::after,.is-revealed.section-head h2::after{animation:accent-draw .9s var(--motion-ease) .3s both}.story{position:relative;overflow:hidden}.story::after{content:'';position:absolute;width:360px;height:360px;right:-180px;top:-180px;border:1px solid #0875bc25;border-radius:50%;box-shadow:0 0 0 45px #0875bc05,0 0 0 90px #0875bc03;pointer-events:none}.closing{background:linear-gradient(120deg,#06264c,#0d4d7e,#06264c);background-size:220% 220%}.closing:has(.is-revealed){animation:closing-wash 3.8s ease both}.closing h2{position:relative}.closing .button:hover{box-shadow:0 16px 42px #75c5f347}.reading-progress{height:4px;box-shadow:0 0 12px #0875bc50}.faq-list details[open] p{animation:faq-unfold .55s var(--motion-ease) both}.faq-list details{transition:border-color .4s,background .4s}.faq-list details[open]{background:#f7fbff}.time{animation:slot-in .4s var(--motion-ease) both}.days{animation:dates-enter .5s var(--motion-ease)}nav.open{animation:menu-open .5s var(--motion-ease) both}::view-transition-old(root){animation:page-exit .38s ease both}::view-transition-new(root){animation:page-reveal .65s var(--motion-ease) both}
@keyframes headline-unfold{from{opacity:0;transform:translateY(115%) rotateX(-18deg)}to{opacity:1;transform:translateY(0) rotateX(0)}}@keyframes cinematic-rise{from{opacity:0;transform:translateY(48px)}to{opacity:1;transform:translateY(0)}}@keyframes card-arrival{from{opacity:0;transform:translateY(58px) rotateX(7deg) scale(.96)}to{opacity:1;transform:translateY(0) rotateX(0) scale(1)}}@keyframes accent-draw{from{transform:scaleX(0)}to{transform:scaleX(1)}}@keyframes faq-unfold{from{opacity:0;transform:translateY(-15px)}to{opacity:1;transform:translateY(0)}}@keyframes page-exit{to{opacity:0;transform:translateY(-10px)}}@keyframes page-reveal{from{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}
@media(hover:hover) and (pointer:fine){.interactive-card:hover{transform:perspective(1200px) rotateX(var(--tilt-x,0deg)) rotateY(var(--tilt-y,0deg)) translateY(-9px)}.magnetic-button{translate:var(--magnet-x,0px) var(--magnet-y,0px)}}@media(max-width:760px){.is-revealed{animation-duration:.8s}.is-revealed.card-entry{animation-duration:.85s}.headline-active .headline-line{animation-duration:.95s}.story::after{width:220px;height:220px;right:-140px;top:-140px}}body[data-motion='off'] .headline-line{opacity:1;transform:none}body[data-motion='off'] .interactive-card:hover,body[data-motion='off'] .magnetic-button{transform:none;translate:none}@media(prefers-reduced-motion:reduce){.headline-line{opacity:1!important;transform:none!important}.interactive-card:hover,.magnetic-button{transform:none!important;translate:none!important}::view-transition-old(root),::view-transition-new(root){animation:none!important}}
/* One entrance timeline: rows left-to-right, then top-to-bottom. */
.motion-ready .hero-content>*{animation:none}.motion-ready .hero-photo{animation:none}.motion-ready .hero-content>*.is-revealed{animation:cinematic-rise .95s var(--motion-ease) var(--reveal-delay,0ms) both}.motion-ready .hero-content>h1.is-revealed,.is-revealed.page-title{animation:none}.headline-active .headline-line{animation-delay:calc(var(--reveal-delay,0ms) + var(--line-delay,0ms))}.motion-ready .hero-photo.is-revealed{animation:portrait-soft 1.25s ease-out var(--reveal-delay,0ms) both}.is-revealed h2::after,.is-revealed.section-head h2::after{animation-delay:calc(var(--reveal-delay,0ms) + 300ms)}

.hero-secondary{display:inline-block;margin-top:20px}.hero-actions{flex-wrap:wrap;gap:24px}.hero-actions>.button{font-size:21px;padding:18px 30px}.hero h1{font-size:clamp(36px,4.1vw,65px)}@media(max-width:760px){.hero-actions>.button{font-size:18px;padding:15px 24px}.hero h1{font-size:36px}}
.motion-ready main h1.headline-active .headline-line{animation:headline-unfold 1.15s var(--motion-ease) calc(var(--reveal-delay,0ms) + var(--line-delay,0ms)) both}.hero-content h1 .headline-mask,.hero-content h1 .headline-line{display:block}@media(max-width:760px){.motion-ready main h1.headline-active .headline-line{animation-duration:.95s}}body[data-motion='off'] main h1.headline-active .headline-line{animation:none}

.auth-section{max-width:750px}.auth-card{padding:clamp(24px,5vw,48px);border:1px solid var(--line,#dce5ef);border-radius:24px;background:#fff;box-shadow:0 20px 70px #07356910}.auth-tabs{display:flex;gap:12px;margin-bottom:28px}.auth-card label{display:block;font-weight:600;margin:18px 0}.auth-card input{display:block;box-sizing:border-box;width:100%;padding:14px 16px;margin-top:8px;border:1px solid #bacada;border-radius:12px;background:#f9fbfe;color:#082248;font:inherit}.auth-card input:focus{outline:2px solid #258fe0;outline-offset:2px}.auth-card [hidden]{display:none}.auth-card button:disabled{opacity:.6;cursor:wait}.member-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:20px}.member-card{padding:26px;border:1px solid #dce5ef;border-radius:20px;background:#fff}.member-card h3{margin:0 0 12px}.account-actions{display:flex;gap:18px;align-items:center;margin:24px 0}.member-records{margin:36px 0}.member-records li{padding:18px;border-bottom:1px solid #dce5ef;list-style:none}.member-records ul{padding:0}.member-card p{overflow-wrap:anywhere}

.social-logins{display:grid;gap:12px}.google-login,.facebook-login{display:flex;width:100%;justify-content:center;align-items:center;gap:14px;padding:15px 22px;min-height:54px;background:#fff;color:#1f2937;border:1px solid #b7c5d5;border-radius:12px;font-weight:600;cursor:pointer;transition:box-shadow .25s,border-color .25s}.google-login:hover{border-color:#4285f4;box-shadow:0 5px 18px #4285f41a}.facebook-login:hover{border-color:#1877f2;box-shadow:0 5px 18px #1877f21a}.google-icon,.facebook-icon{display:block;width:20px;height:20px;object-fit:contain;flex:0 0 20px}.auth-divider{display:flex;align-items:center;gap:16px;color:#526781;margin:24px 0;font-size:14px}.auth-divider:before,.auth-divider:after{content:'';flex:1;height:1px;background:#dce5ef}

.booking-details:empty{display:none}.booking-details{border-top:1px solid #dce5ec;margin-top:28px;padding-top:24px;animation:cinematic-rise .7s both}.booking-form{display:grid;gap:16px}.booking-form label{display:grid;gap:7px}.booking-form input,.booking-form textarea{width:100%;padding:12px;border:1px solid #b9c8d3;border-radius:10px;background:#fff;color:#102c46;font:inherit}.times button.time{cursor:pointer;font:inherit}.times .time.selected{background:#123f68;color:white;border-color:#123f68}.booking-form button:disabled{opacity:.55;cursor:wait}.booking-form input:focus-visible,.times button:focus-visible{outline:3px solid #51b7ee;outline-offset:3px}.booking-status{color:#b33b30}

/* Student scheduling dashboard */

#student-dashboard{--ej-bg:#f5f6fa;--ej-surface:#ffffff;--ej-ink:#172d4e;--ej-soft:#edf2f8;--ej-muted:#687487;--ej-line:#e1e6ed;--ej-navy:#1d365d;--ej-on-navy:#ffffff;--ej-green:#2d735c;--ej-green-bg:#edf6f1;--ej-warm:#a25e15;--ej-warm-bg:#fff4e4;font:14px/1.5 Arial,Helvetica,'Segoe UI','Microsoft JhengHei',sans-serif;color:var(--ej-ink);background:var(--ej-bg);border-radius:16px;overflow:hidden;color-scheme:light}
#student-dashboard *{box-sizing:border-box}#student-dashboard [hidden]{display:none!important}#student-dashboard h1,#student-dashboard h2,#student-dashboard h3,#student-dashboard p{margin:0}#student-dashboard h1{font-size:27px;font-weight:500;letter-spacing:.02em}#student-dashboard h2{font-size:20px;font-weight:500}#student-dashboard h3{font-size:15px;font-weight:500}#student-dashboard strong{font-weight:500}#student-dashboard button,#student-dashboard input,#student-dashboard select{font:inherit}#student-dashboard button{color:inherit;border:0;background:none;display:inline-flex;justify-content:center;align-items:center;gap:8px;min-height:38px;border-radius:8px;padding:8px 12px}#student-dashboard button:disabled{opacity:.45}#student-dashboard button:hover:not(:disabled){filter:brightness(.96)}#student-dashboard button:focus-visible,#student-dashboard select:focus-visible{outline:2px solid var(--ej-green);outline-offset:3px}#student-dashboard .ej-primary{background:var(--ej-navy);color:var(--ej-on-navy)}#student-dashboard .ej-secondary,#student-dashboard .ej-small{border:1px solid var(--ej-line);background:var(--ej-surface)}#student-dashboard .ej-link{padding:0;font-size:12px}#student-dashboard .ej-full{width:100%}#student-dashboard .ej-icon{padding:4px 10px;min-width:36px;font-size:23px}#student-dashboard .ej-muted{color:var(--ej-muted)}#student-dashboard .ej-row{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}#student-dashboard .ej-header{display:flex;justify-content:space-between;align-items:center;padding:20px 32px;background:var(--ej-surface);border-bottom:1px solid var(--ej-line)}#student-dashboard .ej-brand{font-size:16px;letter-spacing:.17em;font-weight:500}#student-dashboard .ej-brand span{margin-left:7px;color:var(--ej-muted)}#student-dashboard .ej-header-end{display:flex;gap:16px;align-items:center;padding-right:75px}#student-dashboard .ej-avatar{background:var(--ej-soft);border-radius:50%;padding:7px 12px}#student-dashboard .ej-demo{font-size:11px;color:var(--ej-muted)}#student-dashboard main{padding:28px 32px;position:relative}#student-dashboard .ej-welcome{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:25px}#student-dashboard .ej-eyebrow{font-size:11px;letter-spacing:.12em;color:var(--ej-muted)}#student-dashboard .ej-welcome p{margin-top:6px}#student-dashboard .ej-zone{font-size:12px;display:flex;align-items:center;gap:7px;color:var(--ej-muted)}#student-dashboard .ej-top{display:grid;grid-template-columns:1.55fr 1fr;gap:18px}#student-dashboard .ej-next,#student-dashboard .ej-balance{padding:22px 24px;border-radius:14px;background:var(--ej-surface);border:1px solid var(--ej-line)}#student-dashboard .ej-next{border-top:3px solid var(--ej-navy)}#student-dashboard .ej-tag{font-size:11px;background:var(--ej-green-bg);color:var(--ej-green);padding:3px 9px;border-radius:5px}#student-dashboard .ej-next-detail{display:flex;gap:23px;align-items:center;padding:18px 0}#student-dashboard .ej-next-detail p{font-size:12px;margin-top:4px}#student-dashboard .ej-date{display:grid;text-align:center;border-right:1px solid var(--ej-line);padding-right:23px;min-width:70px;font-size:12px}#student-dashboard .ej-date strong{font-size:34px;line-height:1.2}#student-dashboard .ej-divider{margin:0 6px;color:var(--ej-line)}#student-dashboard .ej-balance-number{display:flex;align-items:baseline;gap:10px;margin:9px 0 8px}#student-dashboard .ej-balance-number strong{font-size:42px;line-height:1.2}#student-dashboard .ej-balance-number span{color:var(--ej-muted)}#student-dashboard .ej-balance-info,#student-dashboard .ej-balance>.ej-row{font-size:12px}#student-dashboard hr{border:0;border-top:1px solid var(--ej-line);margin:18px 0}#student-dashboard .ej-tabs{display:flex;gap:22px;border-bottom:1px solid var(--ej-line);margin:25px 0 23px;flex-wrap:wrap}#student-dashboard .ej-tabs button{border-radius:0;border-bottom:2px solid transparent;padding:13px 3px;color:var(--ej-muted)}#student-dashboard .ej-tabs button[aria-pressed=true]{color:var(--ej-ink);border-color:var(--ej-navy)}#student-dashboard .ej-section-head{display:flex;justify-content:space-between;align-items:center;gap:15px;margin-bottom:20px;flex-wrap:wrap}#student-dashboard .ej-section-head p{font-size:12px;margin-top:5px}#student-dashboard .ej-book-layout,#student-dashboard .ej-history-layout{display:grid;grid-template-columns:minmax(0,1fr) 235px;gap:18px}#student-dashboard .ej-calendar,#student-dashboard .ej-selection,#student-dashboard .ej-preference-form,#student-dashboard .ej-match-panel{background:var(--ej-surface);border:1px solid var(--ej-line);border-radius:12px;min-width:0}#student-dashboard .ej-calendar-toolbar{display:flex;justify-content:space-between;align-items:center;padding:13px 14px;gap:8px}#student-dashboard .ej-calendar-toolbar .ej-row{gap:6px}#student-dashboard .ej-legend{display:flex;gap:16px;padding:0 19px 13px;font-size:11px;color:var(--ej-muted)}#student-dashboard .ej-legend span{display:flex;gap:5px;align-items:center}#student-dashboard .ej-dot{width:7px;height:7px;border-radius:2px;display:inline-block}#student-dashboard .available{background:var(--ej-green)}#student-dashboard .chosen{background:var(--ej-navy)}#student-dashboard .own{background:var(--ej-warm)}#student-dashboard .ej-calendar-scroll{overflow-x:auto}#student-dashboard .ej-week-grid{display:grid;grid-template-columns:46px repeat(7,minmax(60px,1fr));min-width:466px;border-top:1px solid var(--ej-line);padding-bottom:8px}#student-dashboard .ej-day-head{text-align:center;padding:11px 0;font-size:11px;border-bottom:1px solid var(--ej-line)}#student-dashboard .ej-day-head strong{display:block;font-size:15px;margin-top:2px}#student-dashboard .ej-time{font-size:10px;padding:13px 0;text-align:center;color:var(--ej-muted)}#student-dashboard .ej-cell{border-left:1px solid var(--ej-line);border-bottom:1px solid var(--ej-line);padding:4px;min-height:42px;display:flex;align-items:center;justify-content:center}#student-dashboard .ej-cell .ej-slot{min-height:31px;width:100%;padding:4px 0;font-size:11px;background:var(--ej-green-bg);color:var(--ej-green);border-radius:5px}#student-dashboard .ej-cell .ej-slot[aria-pressed=true]{background:var(--ej-navy);color:var(--ej-on-navy)}#student-dashboard .ej-own-slot{background:var(--ej-warm-bg);color:var(--ej-warm);font-size:10px;padding:6px 2px;text-align:center;border-radius:5px;width:100%}#student-dashboard .ej-unavailable{font-size:11px;color:var(--ej-muted);opacity:.55}#student-dashboard .ej-selection{padding:18px;height:fit-content}#student-dashboard .ej-count{font-size:11px;background:var(--ej-soft);padding:3px 8px;border-radius:4px}#student-dashboard .ej-selected-list{min-height:150px;padding-top:12px}#student-dashboard .ej-selected-item{border-bottom:1px solid var(--ej-line);padding:10px 0;display:flex;justify-content:space-between;align-items:center;font-size:12px}#student-dashboard .ej-selected-item p{color:var(--ej-muted);font-size:11px}#student-dashboard .ej-selected-item button{font-size:17px;min-height:32px;padding:2px 6px}#student-dashboard .ej-selection-total{border-top:1px solid var(--ej-line);padding:15px 0;font-size:12px}#student-dashboard .ej-selection-total .ej-row+.ej-row{margin-top:6px}#student-dashboard .ej-footnote{color:var(--ej-muted);font-size:11px;margin-top:10px;text-align:center}#student-dashboard .ej-empty{text-align:center;color:var(--ej-muted);padding:32px 5px;font-size:12px}#student-dashboard .ej-empty svg{display:block;margin:0 auto 10px;width:22px;height:22px}#student-dashboard .ej-switch{display:flex;border:1px solid var(--ej-line);border-radius:8px;background:var(--ej-surface);padding:3px}#student-dashboard .ej-switch button[aria-pressed=true]{background:var(--ej-soft)}#student-dashboard .ej-month{display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}#student-dashboard .ej-month-head{font-size:11px;text-align:center;padding:10px 0;color:var(--ej-muted);border-bottom:1px solid var(--ej-line)}#student-dashboard .ej-month button{min-height:73px;display:flex;align-items:flex-start;justify-content:flex-start;flex-direction:column;padding:8px;border-radius:0;border-bottom:1px solid var(--ej-line);font-size:12px;gap:6px}#student-dashboard .ej-month button[aria-pressed=true]{background:var(--ej-soft);box-shadow:inset 0 0 0 1px var(--ej-navy)}#student-dashboard .ej-history-mark{font-size:10px;color:var(--ej-green);background:var(--ej-green-bg);padding:2px 4px;border-radius:4px}#student-dashboard .ej-history-mark.upcoming{background:var(--ej-warm-bg);color:var(--ej-warm)}#student-dashboard .ej-record{padding:16px 0;border-bottom:1px solid var(--ej-line)}#student-dashboard .ej-record p{font-size:12px;color:var(--ej-muted);margin-top:5px}#student-dashboard .ej-record .ej-tag{display:inline-block;margin-top:8px}#student-dashboard [data-history-list]{padding:0 20px 20px}#student-dashboard .ej-preference-layout{display:grid;grid-template-columns:1fr 1.3fr;gap:18px}#student-dashboard .ej-preference-form,#student-dashboard .ej-match-panel{padding:22px}#student-dashboard .ej-days{display:flex;gap:7px;margin:18px 0;flex-wrap:wrap}#student-dashboard .ej-days button{background:var(--ej-soft);min-width:32px;padding:6px 9px}#student-dashboard .ej-days button[aria-pressed=true]{background:var(--ej-navy);color:var(--ej-on-navy)}#student-dashboard .ej-form-row{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:14px 0}#student-dashboard label{font-size:12px;display:block}#student-dashboard select{display:block;width:100%;padding:9px;border:1px solid var(--ej-line);border-radius:7px;margin-top:6px;background:var(--ej-surface);color:var(--ej-ink)}#student-dashboard .ej-check{display:flex;gap:8px;align-items:center;margin:16px 0}#student-dashboard input[type=checkbox]{accent-color:var(--ej-navy);width:16px;height:16px}#student-dashboard .ej-match-row{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:13px 0;border-bottom:1px solid var(--ej-line);font-size:12px}#student-dashboard .ej-match-row p{color:var(--ej-muted);font-size:11px}#student-dashboard .ej-notice{margin-top:18px;padding:12px 16px;background:var(--ej-soft);border-radius:8px;font-size:12px}#student-dashboard .ej-dialog{background:var(--ej-surface);border:1px solid var(--ej-line);box-shadow:0 12px 40px #0002;border-radius:14px;padding:24px;margin-top:20px}#student-dashboard .ej-dialog h2{margin-top:3px}#student-dashboard .ej-occurrence{display:grid;grid-template-columns:minmax(90px,1fr) minmax(80px,1fr) minmax(100px,1fr);gap:10px;align-items:center;padding:12px 0;border-bottom:1px solid var(--ej-line);font-size:12px}#student-dashboard .ej-occurrence label{margin:0;display:flex;gap:7px;align-items:center}#student-dashboard .ej-conflict{color:var(--ej-warm)}#student-dashboard .ej-dialog-footer{margin-top:18px;display:flex;justify-content:space-between;align-items:center;gap:15px;flex-wrap:wrap}#student-dashboard .ej-dialog-note{font-size:12px;color:var(--ej-muted);margin:14px 0}
@media(max-width:760px){#student-dashboard main{padding:20px 16px}#student-dashboard .ej-header{padding:16px}#student-dashboard .ej-header-end{padding-right:75px}#student-dashboard .ej-demo{display:none}#student-dashboard .ej-top{grid-template-columns:1.25fr 1fr}#student-dashboard .ej-next,#student-dashboard .ej-balance{padding:18px 16px}#student-dashboard .ej-book-layout,#student-dashboard .ej-history-layout{grid-template-columns:minmax(0,1fr)}#student-dashboard .ej-selected-list{min-height:0}#student-dashboard .ej-welcome{align-items:flex-start;flex-direction:column}#student-dashboard .ej-tabs{gap:16px}#student-dashboard .ej-preference-layout{grid-template-columns:1fr}#student-dashboard .ej-month button{min-height:65px;padding:6px 3px}#student-dashboard .ej-history-mark{font-size:9px}}
@media(max-width:520px){#student-dashboard .ej-top{grid-template-columns:1fr}#student-dashboard h1{font-size:24px}#student-dashboard h2{font-size:18px}#student-dashboard .ej-tabs{gap:10px}#student-dashboard .ej-tabs button{font-size:12px;gap:5px}#student-dashboard .ej-tabs svg{width:14px}#student-dashboard .ej-form-row{grid-template-columns:1fr}#student-dashboard select{font-size:16px}#student-dashboard .ej-occurrence{grid-template-columns:1fr 1fr}#student-dashboard .ej-occurrence select{grid-column:1/-1}#student-dashboard .ej-dialog{padding:16px}#student-dashboard button{min-height:44px}#student-dashboard .ej-cell .ej-slot{min-height:38px}#student-dashboard .ej-month button{min-height:64px}#student-dashboard .ej-header-end{padding-right:70px}}
/* Live student area: scoped layout, readable controls, native accessible modal. */
.student-account-page{max-width:1200px;margin:0 auto;padding:36px 5% 64px}
#student-dashboard{padding:28px 32px}
#student-dashboard nav.ej-tabs{position:static;display:flex;padding:0;background:transparent;box-shadow:none;z-index:auto;font-size:14px}
#student-dashboard .ej-calendar-status{padding:0 18px 12px;font-size:12px;color:var(--ej-muted)}
#student-dashboard .ej-credit-note{font-size:12px;margin-top:12px}
#student-dashboard input[type=time],#student-dashboard input[type=date]{display:block;width:100%;padding:9px;border:1px solid var(--ej-line);border-radius:7px;margin-top:6px;background:var(--ej-surface);color:var(--ej-ink);font:inherit;min-height:42px}
#student-dashboard input:focus-visible,#student-dashboard a:focus-visible{outline:2px solid var(--ej-green);outline-offset:3px}
#student-dashboard .ej-join{display:inline-flex;align-items:center;justify-content:center;padding:10px 14px;min-height:42px;border-radius:8px;font-size:14px;text-decoration:none}
#student-dashboard .ej-dialog{position:fixed;inset:0;margin:auto;width:min(620px,calc(100% - 32px));max-height:85vh;overflow-y:auto;color:var(--ej-ink)}
#student-dashboard .ej-dialog::backdrop{background:#09233b70;backdrop-filter:blur(3px)}
#student-dashboard .ej-history-mark{font-size:11px}
#student-dashboard .ej-history-mark.canceled{color:var(--ej-muted);background:var(--ej-soft);text-decoration:line-through}
#student-dashboard .ej-error{color:#ad3529}
#student-dashboard .ej-plans-heading{margin-top:24px}
#student-dashboard .ej-empty-next{margin:20px 0 8px}
@media(max-width:760px){.student-account-page{padding:20px 3% 40px}#student-dashboard{padding:20px 16px}#student-dashboard .ej-tabs button{font-size:14px}#student-dashboard .ej-history-mark{font-size:11px}}
@media(max-width:520px){#student-dashboard{padding:20px 12px}#student-dashboard .ej-tabs{gap:12px}#student-dashboard .ej-tabs button{font-size:13px}#student-dashboard input[type=time],#student-dashboard input[type=date]{font-size:16px}#student-dashboard .ej-calendar-toolbar{flex-wrap:wrap}#student-dashboard .ej-cell{padding:3px}}
#student-dashboard .ej-scroll-hint{display:none}#student-dashboard .ej-time{font-size:11px}#student-dashboard .ej-cell .ej-slot{font-size:12px}@media(max-width:760px){#student-dashboard .ej-scroll-hint{display:block;padding:0 18px 10px;font-size:12px;color:var(--ej-muted)}}

/* Calendar orientation and selection conflicts. */
#student-dashboard .ej-week-nav{border:1px solid transparent;background:transparent;color:var(--ej-muted);font-weight:400;min-height:44px;padding:8px 12px;white-space:nowrap}#student-dashboard .ej-week-nav span[aria-hidden]{font-size:19px;line-height:1}#student-dashboard .ej-week-nav:disabled{border-color:var(--ej-line)}#student-dashboard .ej-day-head.ej-today{background:#e8f2ee;color:#225f4a;box-shadow:inset 0 3px 0 #39775f}#student-dashboard .ej-today-label{position:absolute;bottom:5px;left:0;right:0;font-size:10px;font-weight:600}#student-dashboard .ej-cell.ej-today-cell{background:#f0f7f3}#student-dashboard .ej-cell .ej-slot-overlap:disabled{background:#e5e7eb;color:#6b7280;opacity:1;cursor:not-allowed;box-shadow:none;border:1px solid #d1d5db}#student-dashboard .ej-calendar-toolbar>.ej-row{flex:1}#student-dashboard .ej-calendar-toolbar [data-week-label]{text-align:center;flex:1;white-space:nowrap}@media(max-width:520px){#student-dashboard .ej-calendar-toolbar>.ej-row{flex-basis:100%;display:grid;grid-template-columns:auto 1fr auto}#student-dashboard .ej-week-nav{font-size:12px;padding:7px 9px}#student-dashboard .ej-calendar-toolbar>[data-action=today]{margin-left:auto}}

#student-dashboard .ej-day-head{position:relative;height:76px}#student-dashboard .ej-week-nav:hover:not(:disabled){background:var(--ej-soft);color:var(--ej-navy)}#student-dashboard .ej-week-nav:disabled{border-color:transparent}#student-dashboard .ej-today-reveal{animation:ej-today-glow 1.4s ease-out}@keyframes ej-today-glow{0%,45%{background-color:#bcdcca;box-shadow:inset 0 0 0 2px #39775f}25%,70%{background-color:#e0f0e7;box-shadow:inset 0 0 0 1px #80ae96}100%{background-color:#f0f7f3}}@media(prefers-reduced-motion:reduce){#student-dashboard .ej-today-reveal{animation:none;box-shadow:inset 0 0 0 2px #39775f}}

/* Approved Airy week: no prototype data or host controls. */
#student-dashboard{--ring-duration:1500ms;--week-duration:400ms}
#student-dashboard .ej-calendar{padding:16px;border:0;background:var(--ej-surface)}
#student-dashboard .ej-calendar-toolbar{position:relative;display:flex;justify-content:center;padding:0 38px 12px;min-height:76px}
#student-dashboard .ej-calendar-toolbar>.ej-row{flex:0 1 340px;display:grid;grid-template-columns:44px minmax(0,1fr) 44px;gap:6px;flex-basis:340px}
#student-dashboard .ej-calendar-toolbar [data-week-label]{font-size:13px;white-space:normal;line-height:1.6;text-align:center}
#student-dashboard .ej-week-nav{min-width:44px;min-height:44px;padding:6px;color:var(--ej-navy);border:0;border-radius:6px}
#student-dashboard .ej-week-nav span[aria-hidden]{font-size:23px}
#student-dashboard .ej-calendar-toolbar [data-action=today]{position:absolute;right:0;top:17px;min-height:32px;padding:4px 8px;font-size:12px;border-color:var(--ej-line);margin:0}
#student-dashboard .ej-legend{padding:4px 0 8px;flex-wrap:wrap}
#student-dashboard .ej-calendar-status{padding:0!important;min-height:20px}
#student-dashboard .ej-scroll-hint{display:none}
#student-dashboard .ej-calendar-scroll{overflow:clip;display:flow-root;height:auto;max-height:none;position:relative}
#student-dashboard .ej-week-grid{position:relative;width:100%;min-width:0;grid-template-columns:38px repeat(7,minmax(0,1fr));border:0;padding:0;margin-top:10px}
#student-dashboard .ej-day-head{height:76px;padding:7px 0;border:0;font-size:11px;color:var(--ej-muted)}
#student-dashboard .ej-day-head strong{font-size:19px;line-height:22px;margin-top:5px;color:var(--ej-ink)}
#student-dashboard .ej-day-head.ej-today{background:transparent;box-shadow:none;color:var(--ej-muted)}
#student-dashboard .ej-today-label{bottom:6px;font-size:10px;font-weight:400;line-height:16px;color:var(--ej-green)}
#student-dashboard .ej-cell.ej-today-cell{background:transparent}
#student-dashboard .ej-cell{height:40px;min-height:40px;padding:4px 3px;border:0;position:relative}
#student-dashboard .ej-cell .ej-slot{position:relative;z-index:2;min-height:32px;height:32px;padding:3px 0;font-size:11px;border-radius:7px;background:var(--ej-green-bg);color:var(--ej-green)}
#student-dashboard .ej-cell .ej-slot[aria-pressed=true]{background:var(--ej-navy);color:var(--ej-on-navy)}
#student-dashboard .ej-cell .ej-slot-overlap:disabled{background:var(--ej-soft);color:var(--ej-muted);border:0;opacity:.65}
#student-dashboard .ej-cell .ej-own-slot{font-size:10px;min-height:32px;height:32px;padding:2px}
#student-dashboard .ej-unavailable{visibility:hidden}
#student-dashboard .ej-time{height:40px;padding:12px 0;font-size:10px}
#student-dashboard .ej-selected-list{height:auto;max-height:none;overflow:visible;min-height:110px}
#student-dashboard .ej-selected-item{align-items:flex-start;position:relative;padding:12px 24px 12px 0}
#student-dashboard .ej-selected-item>button{position:absolute;right:0;top:12px}
#student-dashboard .ej-selected-date,#student-dashboard .ej-selected-time{display:block;line-height:1.7}
#student-dashboard .ej-selected-date{font-size:11px;color:var(--ej-muted)}
#student-dashboard .ej-selected-time{font-size:14px}
#student-dashboard .ej-clear-actions{display:flex;justify-content:flex-end;gap:10px;flex-wrap:wrap}
#student-dashboard .ej-clear-actions button{min-height:36px;text-decoration:underline;text-underline-offset:3px;color:var(--ej-muted)}
#student-dashboard .ej-week-enter{animation:ej-live-week-slide var(--week-duration) ease-out}
@keyframes ej-live-week-slide{from{transform:translateX(var(--week-offset,9px));opacity:.55}to{transform:translateX(0);opacity:1}}
#student-dashboard .ej-day-head.ej-today-reveal{background:transparent;box-shadow:none;animation:none}
#student-dashboard .ej-today-frame{position:absolute;border:1px solid var(--ej-green);border-radius:10px;pointer-events:none;z-index:3;animation:ej-live-today-frame 1.9s ease-out forwards}
@keyframes ej-live-today-frame{0%{opacity:0;background:transparent}12%{opacity:.7;background:var(--ej-green-bg);box-shadow:0 0 12px #39775f25}40%{opacity:.4;background:transparent}75%{opacity:.13}100%{opacity:0;background:transparent;box-shadow:none}}
#student-dashboard .ej-dialog [data-action=close]{width:44px;height:44px;min-height:44px;flex-shrink:0;border:1px solid var(--ej-line);background:var(--ej-soft);border-radius:9px;font-size:25px;padding:0}
#student-dashboard .ej-weekly-dialog{width:min(540px,calc(100% - 28px))}
#student-dashboard .ej-dialog[open]{animation:ej-live-popup .24s cubic-bezier(.16,.85,.3,1)}
#student-dashboard .ej-dialog[open]::backdrop{animation:ej-live-backdrop .18s ease-out}
@keyframes ej-live-popup{from{opacity:0;transform:translateY(10px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}
@keyframes ej-live-backdrop{from{opacity:0}to{opacity:1}}
#student-dashboard .ej-exit-confirm{max-width:390px}
#student-dashboard .ej-exit-confirm .ej-dialog-footer{justify-content:flex-end}
#student-dashboard .ej-plan-balance{display:flex;gap:12px;align-items:center;padding:12px 0;border-bottom:1px solid var(--ej-line);font-size:12px}
#student-dashboard .ej-starts-now{font-size:12px;color:var(--ej-muted);margin:0 0 18px}
#student-dashboard .ej-start-date{font-size:13px;color:var(--ej-ink);border:1px solid var(--ej-line);background:var(--ej-soft);min-height:36px;margin-left:8px;padding:6px 10px}
#student-dashboard .ej-occurrence{grid-template-columns:minmax(110px,1fr) minmax(0,1.3fr)}
#student-dashboard .ej-week-picker{background:var(--ej-surface);border:1px solid var(--ej-line);border-radius:12px;padding:12px;margin-top:10px;color:var(--ej-ink);animation:ej-live-popup .18s ease-out}
#student-dashboard .ej-week-shortcuts{display:flex;gap:8px;margin-bottom:10px}
#student-dashboard .ej-week-shortcuts button{flex:1;background:var(--ej-soft);border:1px solid var(--ej-line);min-height:44px}
#student-dashboard .ej-week-month{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}
#student-dashboard .ej-week-month button{width:44px;min-height:44px}
#student-dashboard .ej-week-days,#student-dashboard .ej-week-choice{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));align-items:center;text-align:center;gap:0}
#student-dashboard .ej-week-days{color:var(--ej-muted);padding:5px 0}
#student-dashboard .ej-week-choice{width:100%;min-height:44px;border:1px solid transparent;border-radius:7px;background:transparent;padding:6px 0;margin:3px 0}
#student-dashboard .ej-week-choice[aria-pressed=true]{background:var(--ej-green-bg);border-color:var(--ej-green);color:var(--ej-green)}
#student-dashboard .ej-week-choice:disabled{opacity:.3}
#student-dashboard .ej-other-month{opacity:.45}
#student-dashboard .pick-effect{animation:ej-floor-press .48s cubic-bezier(.16,.75,.3,1)}
#student-dashboard .spark-burst i{position:absolute;left:50%;top:50%;background:var(--spark,#efa72e);box-shadow:0 0 4px #f4c97580;pointer-events:none}
@media(max-width:600px){#student-dashboard .ej-calendar{padding:10px 0}#student-dashboard .ej-calendar-toolbar{padding:0 42px 10px 0;flex-wrap:nowrap}#student-dashboard .ej-calendar-toolbar>.ej-row{flex-basis:100%;grid-template-columns:44px minmax(0,1fr) 44px}#student-dashboard .ej-cell{height:44px;min-height:44px;padding:3px 1px}#student-dashboard .ej-cell .ej-slot{height:38px;min-height:38px;font-size:10px}#student-dashboard .ej-week-grid{grid-template-columns:30px repeat(7,minmax(0,1fr))}#student-dashboard .ej-time{height:44px;font-size:10px}#student-dashboard .ej-cell .ej-own-slot{font-size:9px}#student-dashboard .ej-occurrence{grid-template-columns:1fr}#student-dashboard .ej-occurrence select{grid-column:auto}}
#student-dashboard .spark-burst i{position:absolute;left:50%;top:50%;width:5px;height:2px;background:var(--spark);border-radius:50%;box-shadow:0 0 3px var(--spark);opacity:0;will-change:transform,opacity}
#student-dashboard .impact-bed{position:absolute;left:50%;top:75%;width:1px;height:1px;z-index:1;pointer-events:none;--spark:#efa72e}
#student-dashboard .impact-bed .spark-burst{position:absolute;inset:0;z-index:1}
#student-dashboard .floor-wave{position:absolute;left:0;top:0;width:var(--floor-width,64px);height:26px;border-radius:50%;border:2px solid #d1aa6570;box-shadow:0 0 6px #f4c97540;transform:translate(-50%,-50%);animation:ej-floor-wave var(--ring-duration,850ms) cubic-bezier(.12,.6,.3,1) forwards}
#student-dashboard .wind-arc{position:absolute;left:0;top:0;width:var(--floor-width,64px);height:20px;border-radius:50%;border:1px solid transparent;border-bottom-color:#6c859660;border-top-color:#d4b17850;animation:ej-floor-wind calc(var(--ring-duration,850ms)*.8) ease-out forwards;animation-delay:var(--wind-delay,0ms);opacity:0}
#student-dashboard .impact-dust{position:absolute;left:0;top:0;width:3px;height:3px;border-radius:50%;background:#b5a58a;opacity:0;filter:blur(.5px)}
@media(prefers-reduced-motion:reduce){#student-dashboard .impact-bed{display:none}}
#student-dashboard .floor-wave{height:var(--floor-height,44px);border-radius:10px;animation-name:ej-topdown-wave}
#student-dashboard .impact-bed{top:50%}
#student-dashboard .cancel-effect{animation:ej-cancel-stone .3s ease-out;transform:none}
#student-dashboard .cancel-wave{position:absolute;left:0;top:0;width:var(--floor-width,64px);height:var(--floor-height,44px);border:1px solid #809ba980;border-radius:10px;animation:ej-cancel-wave .42s ease-out forwards}
#student-dashboard .cancel-dust{position:absolute;left:0;top:0;width:3px;height:2px;border-radius:50%;background:#809ba9;opacity:0}
@keyframes ej-floor-press{0%{transform:translateY(-2px) scale(1.025)}18%{transform:translateY(5px) scale(1.1,.84);box-shadow:0 1px 2px #18354a35}48%{transform:translateY(-1px) scale(.99,1.025)}100%{transform:translateY(0) scale(1)}}
@keyframes ej-floor-wave{0%{transform:translate(-50%,-50%) scale(.7);opacity:0;filter:blur(0)}12%{opacity:.85}55%{opacity:.4;filter:blur(3px)}100%{transform:translate(-50%,-50%) scale(3.2,2.6);opacity:0;filter:blur(7px)}}
@keyframes ej-floor-wind{0%{transform:translate(-50%,-50%) rotate(var(--wind-angle,0deg)) scale(.8);opacity:0;filter:blur(0)}15%{opacity:.7}100%{transform:translate(-50%,-50%) rotate(var(--wind-angle,0deg)) scale(3.8,2.8);opacity:0;filter:blur(3px)}}
@keyframes ej-topdown-wave{0%{transform:translate(-50%,-50%) scale(.9);opacity:0;filter:blur(0)}12%{opacity:.7}100%{transform:translate(-50%,-50%) scale(2.6);opacity:0;filter:blur(6px)}}
@keyframes ej-cancel-stone{0%{box-shadow:inset 0 0 0 1px #8daab9;filter:brightness(1.04)}100%{box-shadow:none;filter:brightness(1)}}
@keyframes ej-cancel-wave{0%{transform:translate(-50%,-50%) scale(1.5);opacity:0;filter:blur(3px)}30%{opacity:.55}100%{transform:translate(-50%,-50%) scale(1);opacity:0;filter:blur(0)}}
/* Final approved impact and Today styles override earlier experiments. */
#student-dashboard .floor-wave{animation:ej-topdown-wave var(--ring-duration) cubic-bezier(.12,.6,.3,1) forwards;height:var(--floor-height,44px);border-radius:10px}
#student-dashboard .impact-bed{top:50%}
#student-dashboard .ej-today-frame{border:1px solid var(--ej-green);animation:ej-live-today-frame 1.9s ease-out forwards}
@media(prefers-reduced-motion:reduce){#student-dashboard .impact-bed{display:none}#student-dashboard .pick-effect,#student-dashboard .cancel-effect,#student-dashboard .ej-week-enter,#student-dashboard .ej-dialog[open],#student-dashboard .ej-dialog[open]::backdrop,#student-dashboard .ej-week-picker{animation:none}#student-dashboard .ej-today-frame{animation:ej-live-today-frame .6s linear forwards;background:transparent!important;box-shadow:none!important}}

/* Mobile and tablet hardening across every public page and student screen. */
main,section,article,aside,form,.course-body,.booking-panel,.auth-card{min-width:0}
img{max-width:100%}
button,a,input,select,textarea{touch-action:manipulation}
.auth-card,.booking-details,.booking-note,.member-card,.review-card{overflow-wrap:anywhere}
@media(max-width:1100px){
 header{height:82px;padding:8px 4%;gap:12px}
 header .brand{flex:0 0 auto}
 header .brand-logo{width:170px;height:60px}
 header .header-cta{display:none}
 header .student-login{margin-left:auto;min-height:44px;display:inline-flex;align-items:center}
 header .menu{display:inline-flex;align-items:center;justify-content:center;flex:0 0 48px;min-width:48px;min-height:44px;padding:8px;white-space:nowrap;border:0;border-radius:8px;background:var(--surface);font-size:14px}
 header>nav{display:none;position:absolute;top:100%;left:0;right:0;padding:16px 5%;background:var(--white);box-shadow:0 8px 20px #06264c18;max-height:calc(100dvh - 82px);overflow-y:auto;white-space:normal}
 header>nav.open{display:grid;gap:4px;font-size:16px}
 header>nav a{display:flex;align-items:center;min-height:44px;padding:6px 8px}
 header>nav a::after{bottom:0}
}
@media(max-width:760px){
 header{gap:8px;padding-inline:4%}
 header .brand-logo{width:140px}
 header .student-login{font-size:13px}
 .section,.closing{padding-inline:5%}
 .page-title,.section h2,.journey-heading h2,.journey-heading h3{overflow-wrap:anywhere}
 .login-panel,.auth-card,.booking-panel,.booking-note{padding:20px}
 .social-logins button{padding:12px 10px;gap:10px;font-size:15px}
 .auth-tabs{flex-wrap:wrap}
 input,select,textarea,.auth-card input,.booking-form input,.booking-form textarea{font-size:16px;min-height:44px;max-width:100%}
 .chip,.time,.times button.time{min-height:44px}
 .pager{display:flex;justify-content:space-between;gap:8px}
 .pager .chip{flex:1;padding:10px 8px;white-space:normal}
 .days{display:flex;flex-wrap:wrap;overflow:visible;gap:8px}
 .days .chip{flex:1 1 calc(33.333% - 8px);padding:10px 7px;font-size:14px;text-align:center}
 .times{gap:8px}
 .times .time{flex:0 1 calc(33.333% - 6px);padding:8px 4px;text-align:center}
 .button{max-width:100%;white-space:normal;overflow-wrap:anywhere}
 .plan-card{min-height:0;gap:12px}
 .plan-card .button,.auth-card form>.button,.booking-form>.button{width:100%}
 .plan-card ul{margin-block:8px 20px}
 .account-actions,.login-panel{flex-wrap:wrap}
 footer>div{gap:4px 16px}
 footer>div a{min-height:44px;display:inline-flex;align-items:center}
 #student-dashboard .ej-dialog{width:calc(100% - 24px);max-height:calc(100dvh - 24px);padding:16px;overscroll-behavior:contain}
 #student-dashboard .ej-dialog>.ej-row{flex-wrap:nowrap;align-items:flex-start}
 #student-dashboard .ej-dialog-title,#student-dashboard .ej-record,#student-dashboard .ej-selected-item{overflow-wrap:anywhere}
 #student-dashboard .ej-dialog-footer{gap:12px}
 #student-dashboard .ej-dialog-footer>button{min-height:44px;flex:1 1 auto}
 #student-dashboard .ej-dialog select,#student-dashboard input[type=time],#student-dashboard input[type=date]{font-size:16px;min-height:44px}
 #student-dashboard .ej-match-row{flex-wrap:wrap}
 #student-dashboard .ej-match-row .ej-secondary{min-height:44px}
 #student-dashboard .ej-plan-balance{flex-wrap:wrap}
 #student-dashboard .ej-week-shortcuts button{font-size:14px;padding-inline:6px}
 #student-dashboard .ej-start-date{min-height:44px}
 #student-dashboard .ej-next-detail{gap:12px}
 #student-dashboard .ej-date{min-width:60px;padding-right:12px}
 #student-dashboard .ej-next-detail>div:last-child{min-width:0}
 #student-dashboard .ej-next-detail h2{font-size:18px;white-space:normal}
 #student-dashboard .ej-footnote{line-height:1.7}
}
@media(max-width:380px){
 header .brand-logo{width:112px;height:56px}
 header .student-login{font-size:12px}
 header .menu{flex-basis:44px;min-width:44px}
 .hero h1{font-size:32px}
 .hero-actions>.button{width:100%;font-size:17px}
 .trust{border-left:0;padding-left:0}
 .journey-heading,.course-options>article{padding:24px 18px}
 .auth-card,.booking-panel,.booking-note{padding:16px}
 .google-login,.facebook-login{font-size:14px}
 .student-account-page{padding-inline:2%}
 #student-dashboard{padding-inline:8px}
 #student-dashboard .ej-tabs{gap:8px}
 #student-dashboard .ej-tabs button{font-size:12px;padding-inline:2px}
 #student-dashboard .ej-cell .ej-slot{font-size:11px;padding:0;min-height:44px;height:44px}
 #student-dashboard .ej-cell,#student-dashboard .ej-time{height:48px;min-height:48px}
 #student-dashboard .ej-cell .ej-own-slot{font-size:10px}
 #student-dashboard .ej-selected-item>button{min-width:32px;min-height:44px}
 #student-dashboard .ej-history-layout .ej-selection{padding:14px}
}
@media(pointer:coarse){
 .button:hover,.chip:hover,.plan-card:hover,.feature-grid article:hover,.review-card:hover{transform:none;translate:none}
 #student-dashboard .ej-cell{min-height:48px;height:48px}
 #student-dashboard .ej-cell .ej-slot{min-height:44px;height:44px}
 #student-dashboard .ej-clear-actions button,#student-dashboard .ej-link{min-height:44px}
 #student-dashboard .ej-selected-item>button{min-width:32px;min-height:44px}
}

#student-dashboard .ej-slot-check{margin-right:3px}
#student-dashboard .ej-cell .ej-slot{white-space:nowrap;font-variant-numeric:tabular-nums}
@media(max-width:760px){.days .chip{white-space:normal}#student-dashboard .ej-slot-check{position:absolute;right:2px;top:1px;margin:0;font-size:9px;line-height:1}}

/* Keep date choices visible on tablets; compact weekday captions on phones. */
.days{flex-wrap:wrap;overflow:visible}
@media(max-width:600px){#student-dashboard .ej-weekday-prefix{display:none}#student-dashboard .ej-check{min-height:44px;margin-block:8px}}

/* Mobile hero: separate the portrait from the introductory text. */
@media(max-width:760px){
 .hero{display:flex;flex-direction:column;align-items:stretch;min-height:0;padding-top:0}
 .hero-photo{position:relative;display:block;width:100%;height:clamp(240px,62vw,340px);top:auto;right:auto;object-fit:cover;object-position:78% top;transform:none}
 .hero-content{width:100%;background:var(--white);padding:26px 6% 36px;border-top:1px solid var(--line)}
 .hero-content>.eyebrow{font-size:13px;line-height:1.8;letter-spacing:.025em;margin:0 0 18px;padding-left:12px;border-left:3px solid var(--teal);color:var(--teal)}
 .hero-content h1{margin-top:0}
}
