/* PsyAlliance workspace: the final-product sheet. It loads after the approved v13 sheets, which stay exactly as delivered.
   Everything here is a recorded decision (docs/psyalliance-v13-parity/final_product_decisions.md) and a logged exception
   (implementation_exceptions.csv): D-04 contrast, the C-17 menu fix, and a few small pieces for the additions (D-02, D-05, D-09, D-15). */

/* 1. Contrast (D-04, EXC-32, EXC-47). Generated by e2e/tools/make-contrast-css.py from the findings sheets. */
.top-search{color:#6b726b}
.label{color:#5a7356}
.label.gold{color:#806b42}
.label.blue{color:#576f82}
.label.gray{color:#687064}
.count-label{color:#62715e}
.discussion-byline b{color:#62715c}
.discussion-footer small{color:#6c7165}
.pagination small{color:#6c7165}
.invite-banner p{color:#656e5b}
.page-footer{color:#6c7166}
.inbox-filters button.active{color:#5b704c}
.context-strip strong{color:#607651}
.context-strip button{color:#5f7854}
.bubble{color:#647057}
.empty-state{color:#67735c}
.person-specialties span{color:#67725a}
.person-card-bottom small{color:#6b7261}
.plan-date small{color:#6e7661}
.plan-info p{color:#6a735e}
.resource-card p{color:#6a735e}
.timeline-item small{color:#69715f}
.detail-grid dt{color:#6a735e}
.detail-grid dd{color:#637555}
.modal-footer .footer-note{color:#69715f}
.workflow-step{color:#6b7261}
.profile-overview p{color:#67725a}
.keyboard-hint{color:#6a735e}
.avatar.self{color:#71674d}
.circle-legend small{color:#6d7967}
.view-tabs button{color:#687461}
.network-overview>div>p{color:#6d7a67}
.advanced-filters summary span{color:#6c7962}
.results-meta{color:#66755b}
.person-availability small{color:#6a7960}
.layout-toggle button{color:#6b7962}
.list-section-header p{color:#626f59}
.arrangement-main>small{color:#6a7a60}
.modal-header p{color:#5d6e54}
.inline-note{color:#627257}
.field label span{color:#697560}
.field small{color:#66765d}
.form-intro{color:#627855}
.reason-card small{color:#637255}
.need-chips>span{color:#5d7450}
.modal-body .privacy-line{color:#65785c}
.audience-tile small{color:#77686f}
.peer-tags summary span{color:#807078}
.tracking-summary>div>p{color:#657b58}
.tracking-next{color:#647a56}
.tracking-client header>span>strong{color:#677a59}
.client-assignment small{color:#667b56}
.request-details>summary{color:#667b58}
.availability-modal-top p{color:#7c715c}
.state-availability-header{color:#7e7059}
.state-availability-row small{color:#7d7059}
.license-list span{color:#7a674b}
.referral-note{color:#846a3f}
.modal-feature-referrals .need-chips>span{color:#816b42}
.conversation-switch label{color:#6d7968}
.library-review-label{color:#837257}
.invite-prototype{color:#6e7368}
.pulse-wordmark>span{color:#667469}
.pulse-action small{color:#646e5e}
.pulse-tabs button{color:#616b5a}
.pulse-question-byline small{color:#656f5d}
.pulse-pages span{color:#656e5a}
.pulse-empty p{color:#606c58}
.pulse-invite>small{color:#5b6c46}
.pulse-conversations .pulse-section-heading .pulse-kicker{color:#776773}
.pulse-network .pulse-kicker{color:#726751}
.pulse-network .pulse-footnote{color:#70685a}
.direction-incoming .direction-caption{color:#7c6849}
.response-history{color:#6c7166}
.pulse-attention-toggle small{color:#62715c}
.referral-progress li{color:#776e58}
.inbox-latest small{color:#6d7766}
.inbox-person-meta time{color:#6e7767}
.hub-latest-author small{color:#76746b}
.hub-first-reply{color:#7c6474}
.hub-colleague-top p{color:#6f7866}
.hub-colleague-licenses{color:#6f7868}
.hub-colleague-capacity small{color:#67725f}
.hub-colleague-actions .button:last-child{color:#856c34}
.feature-referrals,.modal-feature-referrals{--feature:#7a5f28}

/* Tokens whose value fails on small text: the muted grey, the Network amber, the "other" relationship label, one form note. */
:root{--muted:#636b65}
.feature-network,.modal-feature-network{--feature:#7a674b}
.avatar.relation-other,.relationship-label.relation-other{color:#626d76}
.form-intro{color:#627855!important}

/* 2. The Edit / Remove menu on the first message opened under the header strip (C-17, EXC-33): open it below instead. */
.date-rule+.message-group .popover{bottom:auto;top:calc(100% + 5px)}

/* 3. Small pieces for the additions, from the approved tokens. */
.availability-extra{margin-top:12px}
.availability-extra .field{flex:1;min-width:0}
.availability-consult{margin-top:12px}
.availability-consult p{font-size:11px;line-height:1.7;color:#6c7165;margin:4px 0 0 28px}
.field-hint{display:block;margin-top:6px;font-size:11px;line-height:1.6;color:#667160}
.referral-title-line{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:12px 0;padding:10px 14px;border:1px solid var(--line);border-radius:10px;background:#fff}
.referral-title-line small{display:block;font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:#6c7165}
.referral-title-line strong{font-size:14px;font-weight:600}
.profile-safety{margin-top:14px;font-size:12px;color:#6c7165}
.profile-safety .text-link,.report-link{font-size:12px;color:#6c7165;text-decoration:underline;text-underline-offset:2px}
.report-link{margin-left:10px}
.physician-list{margin-top:6px}

/* A very long name or role in the menu's name card is cut with an ellipsis instead of running out of the menu (R18-16, carried from the older app). */
.sidebar .profile-button{min-width:0}
.sidebar .profile-button>span:not(.avatar){min-width:0;flex:1 1 auto;overflow:hidden}
.sidebar .profile-button strong,.sidebar .profile-button small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* Smooth pop-ups: the card stays; only its content eases in. */
@keyframes stage-in{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
.modal.is-stage>.modal-body,.modal.is-stage>.modal-header>div:first-child,.modal.is-stage>.modal-footer{animation:stage-in .22s cubic-bezier(.2,.7,.2,1) both}
.overlay.is-closing{opacity:0;transition:opacity .15s ease;pointer-events:none}
.overlay.is-closing .modal{transform:translateY(4px);transition:transform .15s ease}
@media(prefers-reduced-motion:reduce){.modal.is-stage>*,.modal.is-stage>.modal-header>div:first-child{animation:none!important}}
