[hidden]{display:none!important}
.hero-photo{animation:coastal-drift 20s ease-in-out infinite alternate;transform-origin:65% 55%}
@keyframes coastal-drift{from{transform:scale(1)}to{transform:scale(1.065)}}
.motion-paused .hero-photo{animation-play-state:paused}
.motion-toggle{position:absolute;right:24px;bottom:24px;z-index:2;background:#062852a6;color:#fff;border:1px solid #ffffff70;border-radius:4px;padding:8px 14px;font-size:14px;cursor:pointer}
.reveal-item{transition:opacity .65s ease,transform .65s cubic-bezier(.2,.65,.3,1)}
.reveal-pending{opacity:0;transform:translateY(24px)}
.button span,.text-link span{transition:transform .2s ease}
.button:hover span,.text-link:hover span{transform:translate(3px,-3px)}
.topic{transition:box-shadow .25s ease,transform .25s ease,border-color .25s ease}
.topic:hover{border-color:#6ca6a0;box-shadow:0 12px 26px #0628520b;transform:translateY(-4px)}
.choice-controls{display:flex;flex-wrap:wrap;gap:12px;margin-bottom:24px}
.choice-controls button{border:1px solid var(--line);background:white;color:var(--navy);padding:13px 22px;border-radius:4px;cursor:pointer;font-size:16px;transition:background .2s,border-color .2s,color .2s}
.choice-controls button:hover{border-color:var(--teal)}
.choice-controls button[aria-pressed=true]{background:var(--navy);color:white;border-color:var(--navy)}
.need-panel{padding:36px 40px;background:var(--paper);border-left:3px solid var(--gold);min-height:255px}
.need-panel h3{font-family:'Noto Serif TC',serif;font-size:28px}
.need-panel p{color:var(--muted);max-width:750px}
.course-filters{margin-top:30px;margin-bottom:10px}.filter-status{font-size:14px;margin-bottom:24px}
@media(max-width:720px){.need-panel{padding:28px 24px;min-height:300px}.need-panel h3{font-size:24px}.choice-controls{gap:8px}.choice-controls button{padding:11px 14px;font-size:14px}.motion-toggle{bottom:16px;right:18px}.hero-photo{transform-origin:70% center}}
@media(prefers-reduced-motion:reduce){.hero-photo{animation:none}.motion-toggle{display:none}.reveal-item,.topic,.button span,.text-link span,.choice-controls button{transition:none}.reveal-pending{opacity:1;transform:none}.topic:hover{transform:none}}
