/* Event-driven, bounded motion. The persistent UI always retains the actual outcome. */
.tw-call-icon{display:inline-block;width:16px;height:16px;margin-right:6px;vertical-align:-3px;color:var(--tw-gold)}
.tw-offer-feed{overflow-x:hidden}
.tw-call-arrives{animation:tw-call-in .5s ease-out both}.tw-call-arrives .tw-call-icon{animation:tw-phone-ring .65s ease-in-out}
@keyframes tw-call-in{from{opacity:0;transform:translateX(12px)}to{opacity:1;transform:none}}
@keyframes tw-phone-ring{0%,100%{transform:rotate(0)}20%,60%{transform:rotate(-14deg)}40%,80%{transform:rotate(14deg)}}
.tw-objective-check{width:15px;height:15px;vertical-align:-3px;margin-right:4px;color:var(--tw-gold);fill:none;stroke:currentColor;stroke-width:2.5}
.tw-objective-earned .tw-objective-check path{stroke-dasharray:25;animation:tw-check-draw .6s ease-out both}
@keyframes tw-check-draw{from{stroke-dashoffset:25}to{stroke-dashoffset:0}}
.tw-changed{animation:tw-term-changed .9s ease-out}.tw-response-accepted{animation:tw-response-ready .75s ease-out}.tw-response-rejected{animation:tw-response-no .75s ease-out}
@keyframes tw-term-changed{0%,35%{box-shadow:inset 0 0 0 2px var(--tw-gold);background-color:#322615}100%{box-shadow:inset 0 0 0 2px transparent}}
@keyframes tw-response-ready{0%,35%{box-shadow:inset 3px 0 #8dddb1;background-color:#14271d}100%{box-shadow:inset 0 0 transparent}}
@keyframes tw-response-no{0%,35%{box-shadow:inset 3px 0 #e88a8a;background-color:#2d181b}100%{box-shadow:inset 0 0 transparent}}
.tw-speech-enter{animation:tw-bubble-in .26s ease-out both}.tw-speech[hidden]{display:none}
.tw-agent-thinking{color:var(--tw-muted);font-size:.72rem;padding:9px 4px}.tw-agent-responses[inert]{opacity:.55}
.tw-agent-promise strong>[data-proposal-term]{display:inline;color:inherit;font-size:inherit;font-weight:inherit;letter-spacing:normal;text-transform:none;border-radius:2px}
@keyframes tw-bubble-in{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
.tw-lodged-moment{position:fixed;z-index:130;inset:50% auto auto 50%;transform:translate(-50%,-50%);width:min(560px,calc(100% - 24px));max-height:calc(100dvh - 32px);overflow:auto;padding:16px;border:1px solid var(--tw-gold);border-radius:6px;background:#090d12;box-shadow:0 18px 65px #000b;color:var(--tw-copy)}
.tw-lodged-moment[hidden]{display:none}.tw-lodged-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}.tw-lodged-heading h2{margin:0;color:var(--tw-gold-hi);font:1.8rem Impact,'Arial Narrow',sans-serif;letter-spacing:.045em}.tw-lodged-heading button{min-height:44px;flex-shrink:0}
.tw-lodged-show h2{animation:tw-lodged-stamp .55s cubic-bezier(.16,.8,.3,1) both}
@keyframes tw-lodged-stamp{from{opacity:0;transform:scale(1.12) rotate(-3deg)}65%,100%{opacity:1;transform:none}}
.tw-transfer{border-top:1px solid var(--tw-line);padding-top:10px;margin-top:10px}.tw-transfer-clubs{display:grid;grid-template-columns:minmax(0,1fr) 24px minmax(0,1fr);align-items:center;gap:5px;font-size:.76rem}.tw-transfer-clubs strong{overflow-wrap:break-word}.tw-transfer-clubs strong:last-child{text-align:right}.tw-transfer-clubs>span{text-align:center;color:var(--tw-gold)}
.tw-transfer-lane{display:flex;flex-wrap:wrap;justify-content:center;gap:5px;padding:12px 18px;overflow:hidden}.tw-transfer-tile{max-width:100%;overflow-wrap:break-word;border:1px solid #b2833c;border-radius:3px;padding:6px 9px;font-size:.72rem;background:#1b1b18;animation:tw-asset-transfer 1.65s ease-in-out both}
@keyframes tw-asset-transfer{0%{opacity:0;transform:translateX(-18px)}20%,45%{opacity:1;transform:translateX(-12px)}80%,100%{opacity:1;transform:translateX(12px)}}
.tw-score-hero{position:relative}.tw-deadline-closed{position:absolute;top:32%;left:0;width:100%;color:var(--tw-gold-hi);font:clamp(1.5rem,6vw,2.6rem) Impact,'Arial Narrow',sans-serif;letter-spacing:.08em;animation:tw-deadline-close .8s both;pointer-events:none}
.tw-report-reveal #finalGrade,.tw-report-reveal #finalScore,.tw-report-reveal #finalSummary{animation:tw-board-report 1.5s ease-out both}.tw-report-skip{min-height:44px;margin-top:12px}
@keyframes tw-deadline-close{0%{opacity:0;transform:translateY(-8px)}20%,70%{opacity:1;transform:none}100%{opacity:0}}
@keyframes tw-board-report{0%,40%{opacity:0;transform:translateY(8px)}75%,100%{opacity:1;transform:none}}
@media(max-width:390px){.tw-lodged-moment{padding:12px}.tw-lodged-heading h2{font-size:1.4rem}.tw-transfer-clubs{font-size:.69rem}.tw-transfer-tile{font-size:.67rem}}
@media(prefers-reduced-motion:reduce){.tw-call-arrives,.tw-call-arrives .tw-call-icon,.tw-objective-earned .tw-objective-check path,.tw-changed,.tw-response-accepted,.tw-response-rejected,.tw-speech-enter,.tw-lodged-show h2,.tw-transfer-tile,.tw-deadline-closed,.tw-report-reveal #finalGrade,.tw-report-reveal #finalScore,.tw-report-reveal #finalSummary{animation:none}.tw-deadline-closed{display:none}}
