/* The woodland belongs to arrival and identity; records keep their quiet canvas. */
:root{--woodland-sky:#89aa40;--woodland-pale:#dde9ba;--woodland-ease:cubic-bezier(.16,1,.3,1)}
.login-shell .sky{background:#f0f4e4;isolation:isolate}
.login-shell .login-wrap{padding-top:76px}
.login-shell .login-intro{height:268px;padding-top:12px}
.login-shell .login-intro h1{max-width:300px;font-size:32px;line-height:1.1;text-wrap:balance}
.login-shell .login-intro p{max-width:240px;line-height:1.5}
.login-shell .login-art{width:194px;height:130px;object-fit:contain;right:-5px;bottom:-2px;animation:none;transform-origin:50% 85%}
.login-shell .login-card{position:relative;background:#fff;border-color:#f0f4e4}
.login-shell .login-card:before{content:"";position:absolute;width:38px;height:6px;border-radius:6px;background:var(--woodland-pale);top:-3px;left:calc(50% - 19px)}
.login-shell .cloud{display:block;position:absolute;pointer-events:none;background:#fff;opacity:.7;width:76px;height:24px;border-radius:40px;animation:none}
.login-shell .cloud:before,.login-shell .cloud:after{content:"";position:absolute;background:inherit;border-radius:50%;bottom:7px;width:33px;height:33px;left:12px}
.login-shell .cloud:after{width:25px;height:25px;left:39px;bottom:4px}
.login-shell .cloud-one{left:auto;right:-19px;top:106px;transform:rotate(-7deg);z-index:-1}
.login-shell .cloud-two{left:-25px;right:auto;top:282px;transform:scale(.7);z-index:-1}
.page-home .home-header{position:relative;isolation:isolate;background:#f0f4e4;padding-bottom:30px}
.page-home .home-header:before{content:"";display:block;position:absolute;z-index:-1;right:76px;top:87px;width:76px;height:23px;border-radius:40px;background:#fff;opacity:.72;box-shadow:18px -9px 0 1px #fff}
.page-home .welcome-line{margin-top:18px;min-height:77px}
.page-home .welcome-line h1{font-size:27px;margin:0 0 5px;max-width:270px}
.page-home .round-tree{width:78px;height:81px;border:0;border-radius:0;background:transparent;transform:none;box-shadow:none;overflow:visible}
.page-home .round-tree img{width:78px;height:81px;object-fit:contain}
.page-home .sky-card{background:var(--woodland-sky);color:#fff;border:0;padding:20px;min-height:142px;isolation:isolate}
.page-home .sky-card h3,.page-home .sky-card p,.page-home .sky-card span{color:#fff;text-shadow:none}
.page-home .sky-card h3{font-family:"Fredoka","Nunito",sans-serif;font-weight:600;margin:0 0 7px;font-size:28px}
.page-home .sky-card p{font-size:12px;font-weight:800;margin:0 0 8px}
.page-home .sky-card>span{font-size:12px;line-height:1.45;display:block}
.page-home .sky-card:after{content:"";display:block;position:absolute;z-index:-1;right:-5px;bottom:-15px;width:120px;height:70px;background:url('../img/garden-hero.png') right bottom/contain no-repeat;border-radius:0;opacity:.28;transform:none}
.page-home .child-hero{padding-right:110px}
.page-home .child-hero h3{font-size:27px;max-width:none}
.page-home .hero-portrait{border:4px solid #fff;box-shadow:none;transform:rotate(4deg);top:24px;right:18px}
.page-home.role-teacher .sky-card{padding-right:140px}
.page-home .class-friends{position:absolute;right:7px;bottom:10px;width:124px;height:112px;object-fit:contain;pointer-events:none}
.page-home .quick-links{gap:10px}
.page-home .quick-links button{position:relative;min-height:76px;background:#fff;border-color:#f0f4e4;overflow:hidden;text-align:left;justify-content:flex-start;font-family:"Nunito",sans-serif;font-size:14px;font-weight:800}
.page-home .quick-links button:nth-child(n){background:#fff;color:var(--ink)}
.page-home .quick-links .fi{width:38px;height:40px;flex:none;font-size:20px;border-radius:12px 12px 15px 7px;background:#f0f4e4;color:var(--action);transform:rotate(-5deg)}
.page-home .quick-links button:nth-child(even) .fi{transform:rotate(5deg);border-radius:12px 12px 7px 15px}
.page-home .quick-links button:before{content:"";position:absolute;left:-5px;bottom:-5px;width:27px;height:15px;border-radius:15px 15px 0 0;background:#fffdf2;pointer-events:none}
.page-home .quick-links button:hover{background:#fffdf2}
.page-home .place-identities{padding:0 2px}
.page-home .white-card .card-top h3{font-size:18px}
.empty-state .woodland-empty{display:block;width:74px;height:78px;object-fit:contain;margin:0 auto 12px}
.empty-state .empty-icon{display:none}
.content-head h2{font-weight:800}
.bottom-nav{border-top-color:#f0f4e4}
.bottom-nav button.active{background:var(--action);box-shadow:none}
.bottom-nav button.active .fi{transform:none}
.woodland-mascot{pointer-events:none;user-select:none}
/* WAAPI owns the bounded welcome so CSS does not replay it on every API render. */
.login-shell .login-intro h1,.login-shell .login-intro p,.page-home .round-tree,.page-home .sky-card{animation:none}
@media(max-width:360px){
  .login-shell .login-wrap{padding-top:72px}
  .login-shell .login-intro{height:273px}
  .login-shell .login-intro h1{font-size:30px;max-width:270px}
  .login-shell .login-intro p{max-width:228px;font-size:12px}
  .login-shell .login-art{width:170px;height:113px;bottom:0;right:-4px}
  .page-home .welcome-line h1{font-size:24px}
  .page-home .round-tree,.page-home .round-tree img{width:65px;height:72px}
  .page-home .sky-card{padding:17px;min-height:141px}
  .page-home .child-hero{padding-right:102px}
  .page-home .child-hero h3{font-size:25px}
  .page-home.role-teacher .sky-card{padding-right:113px}
  .page-home .class-friends{width:105px;height:100px;right:0;bottom:9px}
  .page-home .quick-links button{padding:12px 9px;gap:8px;font-size:13px}
  .page-home .quick-links .fi{width:31px;height:35px;font-size:18px}
}
@media(prefers-reduced-motion:reduce){
  .login-shell *,.page-home *,.bottom-nav *{animation:none!important;transition:none!important;scroll-behavior:auto!important}
}
