.btn{border:none;border-radius:999px;padding:.6rem 1.1rem;cursor:pointer;font-size:.875rem;display:inline-flex;align-items:center;justify-content:center;text-decoration:none;font-weight:600;font-family:inherit;min-height:44px}
.btn-primary{background:var(--primary);color:#fff}
.btn-secondary{background:var(--card);color:var(--primary);border:2px solid var(--light)}
.btn-sm{min-height:36px;padding:.4rem .75rem;font-size:.8rem}
.btn-row{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
.chip{border:2px solid var(--light);background:var(--card);border-radius:999px;padding:8px 14px;font-size:.8rem;cursor:pointer;font-family:inherit}
.chip.active,.chip:hover{background:var(--primary);color:#fff;border-color:var(--primary)}
.archive-masonry{columns:2;column-gap:10px}
.archive-masonry .archive-card{break-inside:avoid;margin-bottom:10px}
.archive-flex{display:flex;flex-direction:column;gap:10px}
.archive-card{border-radius:var(--radius);overflow:hidden;background:var(--card);box-shadow:0 2px 10px rgba(0,0,0,.08);cursor:pointer}
.archive-card img{width:100%;display:block;aspect-ratio:1;object-fit:cover}
.archive-card.milestone{box-shadow:0 0 0 2px var(--accent)}
.archive-card-meta{padding:10px}
.honor-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}
.honor-card{background:var(--card);border-radius:var(--radius);padding:10px;text-align:center;cursor:pointer;box-shadow:0 2px 8px rgba(0,0,0,.06)}
.honor-card.glow{box-shadow:0 0 12px var(--accent)}
.honor-card img{width:100%;border-radius:8px;aspect-ratio:4/3;object-fit:cover;margin-bottom:6px}
.badge-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}
.badge-card{text-align:center;padding:12px;border-radius:12px;border:2px solid rgba(0,0,0,.06)}
.badge-card.on{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 15%,var(--card))}
.menu-list{padding:0!important;overflow:hidden}
.menu-item{display:flex;width:100%;padding:16px;border:none;border-bottom:1px solid rgba(0,0,0,.06);background:var(--card);font-size:1rem;text-align:left;cursor:pointer;color:var(--text);text-decoration:none;font-family:inherit}
.timeline{position:relative;padding:12px 0}
.timeline::before{content:'';position:absolute;left:50%;top:0;bottom:0;width:2px;background:var(--light);transform:translateX(-50%)}
.tl-node{position:relative;width:50%;padding:8px 12px;margin-bottom:12px;cursor:pointer}
.tl-node.right{margin-left:50%}
.tl-dot{position:absolute;top:12px;right:-14px;background:var(--card);border:2px solid var(--primary);border-radius:50%;width:28px;height:28px;display:flex;align-items:center;justify-content:center;font-size:.75rem}
.tl-node.right .tl-dot{left:-14px;right:auto}
.tl-card img{width:100%;border-radius:8px;aspect-ratio:16/10;object-fit:cover;margin-bottom:6px}
.tl-node.milestone .tl-card{border:2px solid var(--accent)}
.modal-backdrop{position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:200;display:flex;align-items:flex-end;justify-content:center;padding:0}
.modal-panel{background:var(--card);width:100%;max-width:480px;max-height:90vh;overflow-y:auto;border-radius:20px 20px 0 0;padding:16px;position:relative}
.modal-close{position:absolute;top:8px;right:12px;border:none;background:none;font-size:1.8rem;cursor:pointer;line-height:1}
.modal-img{width:100%;border-radius:12px;max-height:40vh;object-fit:cover}
.modal-body{padding-top:12px}
.comment-row{padding:8px 0;border-bottom:1px solid rgba(0,0,0,.06);font-size:.875rem}
.dash-bars{display:flex;flex-direction:column;gap:10px;margin:12px 0}
.dash-bar{display:grid;grid-template-columns:80px 1fr 32px;align-items:center;gap:8px;font-size:.875rem}
.dash-bar i{display:block;height:10px;background:var(--primary);border-radius:999px;max-width:100%}
.collab-row,.invite-link{font-size:.875rem;padding:6px 0;word-break:break-all}
.bottom-nav{position:fixed;left:0;right:0;bottom:var(--contact-footer-h);height:var(--nav-h);background:var(--card);border-top:1px solid rgba(0,0,0,.08);z-index:90;padding-bottom:env(safe-area-inset-bottom)}
.bottom-nav ul{display:flex;list-style:none;height:100%;margin:0;padding:0}
.bottom-nav li{flex:1;display:flex}
.bottom-nav a{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;text-decoration:none;font-size:.65rem;color:var(--text-secondary);gap:2px;font-weight:600}
.bottom-nav a.active{color:var(--primary)}
.bottom-nav a span:first-child{font-size:1.15rem}
.contact-footer{position:fixed;left:0;right:0;bottom:0;z-index:100;background:#fff;border-top:1px solid #eee;padding:8px 12px calc(8px + env(safe-area-inset-bottom))}
.contact-footer__btns{display:grid;grid-template-columns:repeat(3,minmax(0,88px));gap:8px;max-width:320px;margin:0 auto 4px;justify-content:center}
.contact-footer__cta,.contact-footer__btn{display:flex;align-items:center;justify-content:center;font-size:.72rem;padding:.48rem .2rem;border-radius:8px;text-decoration:none;border:1px solid #ddd;background:#f8f8f8;color:#333;cursor:pointer;font-family:inherit}
.contact-footer__cta{background:#c41e1e!important;color:#fff!important;border-color:#c41e1e}
.contact-footer__brand{text-align:center;font-size:.65rem;color:#888;margin:0}
#fab{position:fixed;right:16px;bottom:calc(var(--contact-footer-h) + var(--nav-h) + 12px);z-index:95}
.fab-btn{width:56px;height:56px;border-radius:50%;border:none;background:var(--primary);color:#fff;font-size:2rem;line-height:1;cursor:pointer;box-shadow:0 4px 16px rgba(0,0,0,.2)}
.toast-container{position:fixed;bottom:calc(var(--contact-footer-h) + var(--nav-h) + 72px);left:50%;transform:translateX(-50%);z-index:300;width:90%;max-width:360px;pointer-events:none}
.toast{background:#333;color:#fff;padding:12px 16px;border-radius:12px;font-size:.9rem;margin-top:8px;text-align:center}
.toast-success{background:#2E7D32}.toast-error{background:#C62828}
.growth-tree{width:100%;max-height:180px}
