/* Portal quality pass: readable metadata, reliable controls and clear focus.
   Loaded after the legacy portal bundle so this remains a deliberately small,
   reversible layer while the larger stylesheet is gradually modularised. */

:root {
   --portal-text-meta: 12px;
   --portal-control-min-height: 40px;
}

/* No client-facing portal text falls below 12px. These were 9–11px before. */
#portalApp :is(
   .sidebar-section-label,
   .nav-item .badge,
   .plan-chip__niche,
   .report-card__month,
   .report-card__status,
   .mom-card__label,
   .mom-card__month,
   .ai-drawer__eyebrow,
   .ai-suggestion,
   .form-label,
   #panel-mydata .form-group label,
   .req-status,
   .req-item__meta,
   .mobile-nav-btn,
   .goal-meta,
   .portal-nav-badge,
   .ob-step-icon,
   .finder-score-label,
   .finder-section-title,
   .finder-region-tag,
   .finder-grade-badge,
   .finder-cert,
   .sr-contact-label,
   .sr-copy-btn,
   .sr-detail-lbl,
   .pipeline-tab .ptab-count,
   .pipe-card__date,
   .pipe-stage,
   .reg-impact,
   .reg-tl-year,
   .reg-tl-full,
   .reg-tl-date,
   .reg-tl-niche,
   .rfq-output-head-lbl,
   .landed-total-label,
   .tag-pill,
   #dashJourneyTracker .pipe-stage,
   .plan-pill,
   .ft-plan-chip,
   .ft-lock__badge,
   .ft-cta-sub
) {
   font-size: var(--portal-text-meta) !important;
}

/* Legacy inline labels and dynamically rendered portal cards use this same
   floor. It intentionally catches both browser serialisations of the style. */
#portalApp :is(
   [style*="font-size:9px"],
   [style*="font-size: 9px"],
   [style*="font-size:10px"],
   [style*="font-size: 10px"],
   [style*="font-size:11px"],
   [style*="font-size: 11px"]
) {
   font-size: var(--portal-text-meta) !important;
}

#loginScreen :is(.login-kicker, .login-metric-strip span, .login-card-topline, .google-login-btn small, .login-divider, .login-brand-text) {
   font-size: var(--portal-text-meta) !important;
}

/* Compact styles can remain compact without being hard to hit. */
#portalApp :is(
   button,
   .btn,
   .nav-item,
   .mobile-nav-btn,
   .finder-chip,
   input:not([type="hidden"]):not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="color"]),
   select,
   textarea
) {
   min-height: var(--portal-control-min-height);
}

@media (pointer: coarse) {
   #portalApp :is(button, .btn, .nav-item, .mobile-nav-btn, .finder-chip, input:not([type="hidden"]):not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="color"]), select, textarea) {
      min-height: 44px;
   }
}

#portalApp :is(button, a, input, select, textarea):focus-visible,
#loginScreen :is(button, a, input, select, textarea):focus-visible {
   outline: 3px solid rgba(240, 165, 30, .88);
   outline-offset: 3px;
}

.portal-visually-hidden {
   position: absolute !important;
   width: 1px !important;
   height: 1px !important;
   padding: 0 !important;
   margin: -1px !important;
   overflow: hidden !important;
   clip: rect(0, 0, 0, 0) !important;
   white-space: nowrap !important;
   border: 0 !important;
}

/* Market Updates: attributed external headlines and SinoSource's own guides. */
.portal-updates {
   max-width: 1180px;
}

.portal-updates__intro {
   color: var(--mid);
   font-size: 14px;
   line-height: 1.65;
   margin: -8px 0 22px;
   max-width: 760px;
}

.portal-updates__notice {
   border: 1px solid rgba(240, 165, 30, .28);
   border-radius: 12px;
   background: rgba(240, 165, 30, .08);
   color: var(--gold-t);
   font-size: 13px;
   line-height: 1.45;
   margin: 0 0 18px;
   padding: 11px 14px;
}

.portal-monitoring-contract {
   align-items: start;
   background: linear-gradient(135deg, rgba(240, 165, 30, .11), rgba(255, 255, 255, .02));
   border: 1px solid rgba(240, 165, 30, .28);
   border-radius: 18px;
   display: grid;
   gap: 24px;
   grid-template-columns: minmax(260px, .8fr) minmax(0, 1.2fr);
   margin-bottom: 20px;
   padding: 20px;
}

.portal-monitoring-contract > div > span {
   color: var(--gold-t);
   font-size: 11px;
   font-weight: 800;
   letter-spacing: .09em;
   text-transform: uppercase;
}

.portal-monitoring-contract h3 {
   color: var(--bright);
   font-size: 18px;
   line-height: 1.35;
   margin: 7px 0;
}

.portal-monitoring-contract p,
.portal-monitoring-contract dd {
   color: var(--mid);
   font-size: 12px;
   line-height: 1.5;
   margin: 0;
}

.portal-monitoring-contract dl {
   display: grid;
   gap: 8px;
   grid-template-columns: repeat(2, minmax(0, 1fr));
   margin: 0;
}

.portal-monitoring-contract dl > div {
   background: rgba(0, 0, 0, .12);
   border: 1px solid var(--border);
   border-radius: 10px;
   min-width: 0;
   padding: 9px 10px;
}

.portal-monitoring-contract dt {
   color: var(--bright);
   font-size: 11px;
   font-weight: 800;
   margin-bottom: 2px;
}

.portal-update-filters {
   display: flex;
   flex-wrap: wrap;
   gap: 8px;
   margin: 0 0 26px;
}

.portal-project-monitoring {
   margin-bottom: 22px;
}

.portal-project-monitoring__eyebrow {
   color: var(--gold-t);
   display: block;
   font-size: 11px;
   font-weight: 800;
   letter-spacing: .09em;
   margin-bottom: 4px;
   text-transform: uppercase;
}

.portal-project-monitoring__list {
   display: grid;
   gap: 12px;
}

.portal-monitor-record {
   background: linear-gradient(145deg, rgba(255, 255, 255, .045), rgba(255, 255, 255, .018));
   border: 1px solid var(--border-m);
   border-radius: 18px;
   padding: 18px;
}

.portal-monitor-record__head {
   align-items: start;
   display: flex;
   gap: 16px;
   justify-content: space-between;
   margin-bottom: 14px;
}

.portal-monitor-record__head h4 {
   color: var(--bright);
   font-size: 16px;
   line-height: 1.4;
   margin: 5px 0 0;
}

.portal-monitor-record__type,
.portal-monitor-record__demo,
.portal-monitor-record__status {
   color: var(--gold-t);
   font-size: 10px;
   font-weight: 800;
   letter-spacing: .07em;
   text-transform: uppercase;
}

.portal-monitor-record__demo {
   background: rgba(91, 126, 153, .16);
   border-radius: 999px;
   color: #b9d0e1;
   display: inline-block;
   margin-right: 7px;
   padding: 3px 7px;
}

.portal-monitor-record__status {
   background: rgba(240, 165, 30, .10);
   border-radius: 999px;
   flex: 0 0 auto;
   padding: 5px 9px;
}

.portal-monitor-record dl {
   display: grid;
   gap: 9px;
   grid-template-columns: repeat(2, minmax(0, 1fr));
   margin: 0 0 13px;
}

.portal-monitor-record dl > div {
   background: rgba(0, 0, 0, .12);
   border: 1px solid var(--border);
   border-radius: 11px;
   min-width: 0;
   padding: 10px 11px;
}

.portal-monitor-record dt {
   color: var(--dim);
   font-size: 10px;
   font-weight: 800;
   letter-spacing: .06em;
   margin-bottom: 3px;
   text-transform: uppercase;
}

.portal-monitor-record dd {
   color: var(--mid);
   font-size: 12px;
   line-height: 1.5;
   margin: 0;
}

.portal-monitor-record dd a { color: var(--gold-t); text-decoration: underline; text-underline-offset: 2px; }
.portal-monitor-record__evidence { grid-column: 1 / -1; }
.portal-monitor-record__evidence dd { color: #c7c7d1; font-style: italic; }

.portal-update-filter {
   min-height: 38px;
   border: 1px solid var(--border-m);
   border-radius: 999px;
   background: rgba(255, 255, 255, .035);
   color: var(--mid);
   cursor: pointer;
   font: 700 12px/1 var(--font);
   padding: 8px 13px;
}

.portal-update-filter:hover,
.portal-update-filter[aria-pressed="true"] {
   border-color: rgba(240, 165, 30, .52);
   background: rgba(240, 165, 30, .13);
   color: var(--gold-t);
}

.portal-update-grid {
   display: grid;
   grid-template-columns: minmax(0, 1.15fr) minmax(300px, .85fr);
   gap: 22px;
}

.portal-update-section {
   min-width: 0;
}

.portal-update-section__head {
   align-items: flex-end;
   display: flex;
   gap: 12px;
   justify-content: space-between;
   margin-bottom: 12px;
}

.portal-update-section__head h3 {
   color: var(--bright);
   font-size: 18px;
   font-weight: 800;
   letter-spacing: -.025em;
}

.portal-update-section__head p {
   color: var(--dim);
   font-size: 12px;
   line-height: 1.45;
   margin: 0;
   max-width: 280px;
   text-align: right;
}

.portal-update-list {
   display: grid;
   gap: 10px;
}

.portal-update-card {
   border: 1px solid var(--border);
   border-radius: 16px;
   background: rgba(255, 255, 255, .025);
   display: block;
   padding: 16px;
   transition: background .18s ease, border-color .18s ease, transform .18s ease;
}

a.portal-update-card:hover {
   border-color: rgba(240, 165, 30, .35);
   background: rgba(240, 165, 30, .06);
   transform: translateY(-1px);
}

.portal-update-card__meta {
   align-items: center;
   color: var(--dim);
   display: flex;
   flex-wrap: wrap;
   font-size: 12px;
   font-weight: 700;
   gap: 7px;
   letter-spacing: .02em;
   text-transform: uppercase;
}

.portal-update-card__topic {
   color: var(--gold-t);
}

.portal-update-card h4 {
   color: var(--bright);
   font-size: 15px;
   line-height: 1.38;
   margin: 7px 0 0;
}

.portal-update-card p {
   color: var(--mid);
   font-size: 13px;
   line-height: 1.55;
   margin: 8px 0 0;
}

.portal-update-card__boundary {
   display: grid;
   gap: 3px 8px;
   grid-template-columns: auto minmax(0, 1fr);
   margin-top: 11px;
}

.portal-update-card__boundary strong,
.portal-update-card__boundary span {
   font-size: 11px;
   line-height: 1.4;
}

.portal-update-card__boundary strong { color: var(--dim); }
.portal-update-card__boundary span { color: var(--mid); }
.portal-update-card__topic-note { color: var(--dim) !important; font-size: 11px !important; }
.portal-update-section--external { opacity: .78; }
.portal-update-section--external:hover { opacity: 1; }

.portal-update-empty {
   border: 1px dashed var(--border-m);
   border-radius: 16px;
   color: var(--mid);
   font-size: 13px;
   line-height: 1.55;
   padding: 20px;
}

.portal-update-retry {
   margin-top: 12px;
}

@media (max-width: 860px) {
   .portal-update-grid { grid-template-columns: 1fr; }
   .portal-monitoring-contract { grid-template-columns: 1fr; }
   .portal-update-section__head { align-items: flex-start; flex-direction: column; }
   .portal-update-section__head p { max-width: none; text-align: left; }
}

@media (max-width: 520px) {
   .portal-monitoring-contract dl { grid-template-columns: 1fr; }
   .portal-monitor-record__head { flex-direction: column; gap: 8px; }
   .portal-monitor-record dl { grid-template-columns: 1fr; }
   .portal-monitor-record__evidence { grid-column: 1; }
}
.portal-hover-border:hover {
  border-color: var(--border-m) !important;
}

.portal-hover-fill:hover {
  border-color: var(--border-m) !important;
  background: var(--bg-mid) !important;
}

.portal-remove-button:hover {
  background: rgba(212, 43, 30, 0.1) !important;
}

.portal-alert-row:hover,
.portal-checklist-row:hover {
  background: rgba(255, 255, 255, 0.03) !important;
}
