.campus-interact{position:fixed;bottom:28px;left:50%;transform:translateX(-50%);background:#253c32;color:white;padding:16px 22px;z-index:6}.mirror-memory{position:fixed;bottom:20%;width:100%;text-align:center;color:#fffdf3;text-shadow:0 2px 8px #243229;font:clamp(22px,4vw,38px) serif;pointer-events:none}.mirror-memory span{display:inline-block;opacity:0;transform:translateY(5px);transition:opacity 650ms ease,transform 650ms ease}.mirror-memory.revealed span{opacity:1;transform:translateY(0)}@media(prefers-reduced-motion:reduce){.mirror-memory span{transition:none}} .penalty-panel{position:fixed;right:16px;top:150px;width:280px;padding:16px;background:#fffef4f5;border-radius:8px;z-index:8}.penalty-panel header{display:flex;align-items:center;justify-content:space-between;gap:8px}.penalty-panel strong{font:23px Georgia,serif}.penalty-exit{font-weight:600;min-height:44px}.penalty-ranges label{display:block;margin:12px 0}.penalty-ranges output{float:right}.penalty-ranges input{display:block;width:100%;margin-top:8px;accent-color:#304d3d;min-height:24px}.penalty-shoot{width:100%;min-height:44px;background:#304d3d;color:white}.penalty-score{min-height:42px;line-height:1.5}.penalty-panel[hidden]{display:none}@media(max-width:699px){.penalty-panel{left:12px;right:12px;top:auto;bottom:max(12px,env(safe-area-inset-bottom));width:auto;padding:12px}.penalty-ranges{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.penalty-ranges label{font-size:12px;margin:4px 0}.penalty-ranges output{float:none;display:block}.penalty-score{font-size:12px;min-height:20px;margin:6px 0}} .basketball-panel .penalty-ranges{grid-template-columns:repeat(2,minmax(0,1fr))} 