/* About and the grove form one compact closing chapter. */
html[data-theme=lab] .about.content-section{padding-top:32px;padding-bottom:28px;border-bottom:0}
html[data-theme=lab] .about.content-section .section-heading{margin-bottom:28px}
html[data-theme=lab] .about-layout{grid-template-columns:.8fr 1.2fr;gap:8%}
/* Heading size, leading and tracking inherit the shared section typography. */
html[data-theme=lab] .about .large-copy{font-size:clamp(17px,1.55vw,21px);line-height:1.5;margin-bottom:16px}
html[data-theme=lab] .about .about-layout p:not(.large-copy){font-size:15px;line-height:1.7}
html[data-theme=lab] .about .interests{margin-top:16px}
html[data-theme=lab] .about-links{margin-top:16px;gap:24px;font-size:13px}
html[data-theme=lab] .about-links a{min-height:34px}
footer.bamboo-footer{display:block;position:relative;isolation:isolate;padding-top:8px;min-height:0;background:var(--bg)}
.grove-caption{display:flex;justify-content:space-between;align-items:center;gap:12px;font-size:10px;line-height:1.5;color:var(--muted);padding:0 0 2px}
.grove-caption>span:first-child{font-family:var(--display);font-size:15px;font-style:italic;color:var(--ink)}
.grove{position:relative;height:clamp(168px,25vh,225px);outline-offset:2px;overflow:hidden;touch-action:pan-y;contain:layout paint;cursor:url('assets/panda/shoot-cursor.svg') 17 3, crosshair}
.grove:focus-visible{outline:1px solid var(--accent)}
.grove canvas{display:block;width:100%;height:100%;pointer-events:none}
.grove-tools{display:flex;align-items:center;justify-content:space-between;gap:14px;font-size:10px;color:var(--muted);height:28px;border-bottom:1px solid var(--line)}
.grove-tools button{background:none;border:0;font-size:10px;padding:6px 8px;color:var(--muted);min-width:44px}
.grove-tools button:hover{color:var(--accent)}
.grove-footer-line{display:flex;align-items:center;gap:15px;min-height:60px;font-size:10px}
.grove-footer-line .panda-mark{width:34px;height:34px}.grove-footer-line>a:last-child{margin-left:auto}
.grove-sr{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
body.reading .bamboo-footer{display:none}
@media(min-width:741px) and (max-height:790px){html[data-theme=lab] .about.content-section{padding-top:24px;padding-bottom:24px}html[data-theme=lab] .about.content-section .section-heading{margin-bottom:24px}.grove{height:160px}.grove-footer-line{min-height:50px}}
@media(max-width:740px){html[data-theme=lab] .about.content-section{padding-top:28px;padding-bottom:28px}html[data-theme=lab] .about-layout{grid-template-columns:1fr;gap:28px}.about #about-title{display:block}.about #about-title br{display:block}html[data-theme=lab] .about .large-copy{font-size:17px}.grove{height:175px}.grove-tools{height:36px}.grove-tools button{min-height:36px}.grove-caption{font-size:9px}.grove-caption>span:first-child{font-size:13px}.grove-footer-line{min-height:56px;gap:10px}.grove-footer-line>a:last-child{max-width:130px;text-align:right}}
/* A small speech bubble belongs to the panda, never to the pointer. */
.grove-invitation-bubble{position:absolute;width:182px;padding:9px 12px 10px;text-align:center;background:#f7f8f2f5;color:var(--ink);border:1px solid #c8d3c7;border-radius:15px;pointer-events:none;box-shadow:0 3px 8px #233f3407;animation:grove-invitation-in .24s ease-out both}
.grove-invitation-bubble::after{content:'';position:absolute;left:calc(50% - 5px);bottom:-6px;width:10px;height:10px;background:#f7f8f2;border-right:1px solid #c8d3c7;border-bottom:1px solid #c8d3c7;transform:rotate(45deg)}
.grove-invitation-bubble strong{display:block;font:italic 15px/1.25 var(--display);font-weight:400}.grove-invitation-bubble>span{display:block;font:10px/1.5 var(--body);color:var(--muted);margin-top:4px}.grove-invitation-bubble>span>span{color:var(--accent)}
@keyframes grove-invitation-in{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}
@media(prefers-reduced-motion:reduce){.grove-invitation-bubble{animation:none}}

@media(max-width:550px){.grove-invitation-bubble{width:132px;padding:8px}.grove-invitation-bubble strong{font-size:13px}.grove-invitation-bubble>span{font-size:9px}}

.grove,.grove-caption{user-select:none;-webkit-user-select:none}

.grove-actions{display:flex;gap:5px;align-items:center;flex-shrink:0}.grove-actions button:disabled{opacity:.4;cursor:default}.grove-actions button+button{border-left:1px solid var(--line)}
