/* Partner portal: the back-office frame with a few partner-specific pieces. */
.narrow-card { max-width: 520px; }
.book-form textarea.mono, .portal-itin { font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; }
.book-form input.upper, .book-form input.iata { text-transform: uppercase; }

/* sign-in pages */
.portal-auth { min-height: 100vh; display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 32px 16px; background: var(--mist, #f3f6f9); }
.portal-auth-brand { display: flex; align-items: center; gap: 10px; text-decoration: none; color: var(--ink); margin-bottom: 8px; }
.portal-auth-brand span { display: flex; flex-direction: column; line-height: 1.15; }
.portal-auth-brand small { color: var(--muted); font-size: .78rem; }
.portal-auth-card { width: 100%; max-width: 420px; }
.portal-auth-card .btn { width: 100%; justify-content: center; }
.portal-auth-title { font-size: 1.35rem; margin: 0 0 14px; }
.portal-auth-foot { margin-top: 16px; text-align: center; }

/* dashboard */
.portal-tiles { display: grid; gap: 12px; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); margin-top: 14px; }
.portal-tile { display: flex; flex-direction: column; gap: 6px; text-decoration: none; color: var(--ink); margin-top: 0; }
.portal-tile strong { font-size: 1.45rem; }
.portal-tile-label { font-size: .72rem; letter-spacing: .09em; text-transform: uppercase; color: var(--muted); }
.portal-balance { font-size: 1.05rem; margin: 0 0 6px; }
.portal-balance strong { font-size: 1.6rem; margin-left: 8px; }

/* quote form */
.portal-legs { display: grid; gap: 8px; }
.portal-leg { display: grid; grid-template-columns: 26px 1fr 1fr 1.3fr; gap: 10px; align-items: end; }
.portal-leg-n { font-weight: 700; color: var(--muted); padding-bottom: 10px; }
@media (max-width: 560px) { .portal-leg { grid-template-columns: 22px 1fr 1fr; } .portal-leg .field:last-child { grid-column: 2 / 4; } }

/* options */
.portal-section-title { font-size: 1.05rem; margin: 26px 0 4px; }
.portal-option-head { display: flex; justify-content: space-between; gap: 16px; align-items: flex-start; flex-wrap: wrap; }
.portal-option-price { font-size: 1.35rem; font-weight: 800; text-align: right; }
.portal-option-price small { display: block; font-size: .72rem; font-weight: 600; color: var(--muted); }
.portal-option.is-expired { opacity: .65; }
.portal-itin { font-size: .8rem; line-height: 1.5; background: var(--mist, #f3f6f9); padding: 10px 12px; border-radius: 10px; margin: 10px 0; white-space: pre-wrap; overflow-x: auto; }

/* messages */
.portal-thread { display: grid; gap: 12px; margin-top: 16px; }
.portal-msg { max-width: 760px; padding: 12px 16px; border-radius: 14px; border: 1px solid var(--line); background: #fff; }
.portal-msg.from-staff { background: rgba(15, 118, 214, .06); border-color: rgba(15, 118, 214, .2); }
.portal-msg.from-me { margin-left: auto; }
.portal-msg-body { white-space: pre-wrap; margin-top: 4px; line-height: 1.5; }
.admin-table tr.is-unread td { background: rgba(255, 176, 32, .08); }
