/* ============================================================
 * 行业 AI 应用平台 — 门户样式（portal.css）
 * Apple Minimal + SaaS 极简风格。配色：Petrol — 深青绿（teal）主色 + 琥珀强调，工业/能源气质，避开 AI 蓝紫俗套。
 * 原生 CSS，不依赖 Vue。所有选择器以 .portal- 为前缀。改色只需调整下方 --portal-* 变量。
 * ============================================================ */

:root {
  --portal-primary: #0d9488;       /* 深青绿 Teal-600，主色 */
  --portal-primary-dark: #0f766e;  /* Teal-700，hover/按下 */
  --portal-primary-light: #5eead4; /* Teal-300，浅态 */
  --portal-accent: #d97706;        /* 琥珀 Amber-600，强调（点缀） */
}

.portal-home { font-family: -apple-system, BlinkMacSystemFont, "Inter", "Noto Sans SC", system-ui, sans-serif; color: #1d1d1f; }
/* SVG 图标基类（<svg class="ic"><use href="#ic-..."/></svg>），尺寸跟随容器 font-size */
.portal-home .ic { display: inline-block; width: 1.15em; height: 1.15em; vertical-align: -0.22em; flex-shrink: 0; }

.portal-home .container { width: 100%; max-width: 1200px; margin: 0 auto; padding: 0 24px; box-sizing: border-box; }
.portal-home .section { padding: 100px 0; margin-top: 0; }
.portal-home .section-header { text-align: center; margin-bottom: 60px; }
.portal-home .section-header h2 { font-size: 36px; font-weight: 700; margin: 0 0 12px; color: #1d1d1f; letter-spacing: -0.01em; }
.portal-home .section-header p { font-size: 16px; color: #6e6e73; max-width: 540px; margin: 0 auto; line-height: 1.7; }

/* ========== HERO（浅灰渐变 + 深色文字 + 蓝青高亮） ========== */
.portal-hero { position: relative; overflow: hidden; padding: 140px 0 110px; text-align: center;
  background: linear-gradient(180deg, #f5f5f7 0%, #e8ecef 50%, #f5f5f7 100%); }
.portal-hero .hero-decor { position: absolute; inset: 0; pointer-events: none; overflow: hidden; }
.portal-hero .hero-circle { position: absolute; border-radius: 50%; opacity: .3; }
.portal-hero .hero-circle-1 { width: 600px; height: 600px; background: radial-gradient(circle, rgba(13,148,136,.08), transparent); top: -200px; right: -150px; }
.portal-hero .hero-circle-2 { width: 400px; height: 400px; background: radial-gradient(circle, rgba(94,234,212,.06), transparent); bottom: -100px; left: -100px; }
.portal-hero .hero-circle-3 { width: 200px; height: 200px; background: radial-gradient(circle, rgba(13,148,136,.05), transparent); top: 30%; left: 10%; }
.portal-hero .hero-content { position: relative; max-width: 720px; margin: 0 auto; padding: 0 24px; }
.portal-hero .hero-badge { display: inline-flex; align-items: center; gap: 6px; padding: 6px 16px; border-radius: 20px;
  background: rgba(13,148,136,.1); color: var(--portal-primary); font-size: 13px; font-weight: 500; margin-bottom: 24px; }
.portal-hero h1 { font-size: 52px; line-height: 1.15; font-weight: 700; margin: 0 0 20px; color: #1d1d1f; letter-spacing: -0.02em; }
.portal-hero h1 .highlight { background: linear-gradient(135deg, var(--portal-primary), var(--portal-primary-light)); -webkit-background-clip: text; background-clip: text; color: transparent; }
.portal-hero .hero-subtitle { font-size: 18px; line-height: 1.7; color: #6e6e73; margin: 0 auto 36px; max-width: 580px; }
.portal-hero .hero-actions { display: flex; gap: 16px; justify-content: center; flex-wrap: wrap; }

.portal-btn { display: inline-flex; align-items: center; gap: 8px; padding: 14px 30px; border-radius: 980px; font-size: 16px; font-weight: 500;
  text-decoration: none; cursor: pointer; border: none; transition: all .2s; }
.portal-btn--primary { background: var(--portal-primary); color: #fff; box-shadow: 0 4px 12px rgba(13,148,136,.25); }
.portal-btn--primary:hover { background: var(--portal-primary-dark); transform: translateY(-1px); box-shadow: 0 6px 16px rgba(13,148,136,.3); }
.portal-btn--ghost { background: rgba(13,148,136,.06); color: var(--portal-primary); }
.portal-btn--ghost:hover { background: rgba(13,148,136,.1); }
.portal-btn--lg { padding: 16px 36px; font-size: 17px; }

/* ========== AI 对话区 ========== */
.portal-aichat { background: linear-gradient(160deg, #f0f4ff 0%, #faf5ff 25%, #f5f5f7 60%, #f0f9ff 100%); }
.portal-aichat .aichat-inner { display: grid; grid-template-columns: 1fr 1fr; gap: 60px; align-items: stretch; }
.portal-aichat .aichat-intro { display: flex; flex-direction: column; justify-content: center; }
.portal-aichat .aichat-badge { display: inline-flex; align-items: center; gap: 6px; padding: 6px 16px; border-radius: 20px;
  background: linear-gradient(135deg, rgba(13,148,136,.1), rgba(217,119,6,.1)); color: var(--portal-primary); font-size: 13px; font-weight: 500; margin-bottom: 20px; }
.portal-aichat h2 { font-size: 36px; margin: 0 0 16px; font-weight: 700; color: #1d1d1f; letter-spacing: -0.01em; line-height: 1.3; }
.portal-aichat h2 .hl { background: linear-gradient(135deg, var(--portal-primary), var(--portal-primary-light)); -webkit-background-clip: text; background-clip: text; color: transparent; }
.portal-aichat .aichat-desc { color: #6e6e73; line-height: 1.8; font-size: 15px; margin: 0 0 24px; }
.portal-aichat .aichat-prompts { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; }
.portal-aichat .aichat-prompts .label { font-size: 13px; color: #86868b; }
.portal-aichat .prompt-chip { padding: 7px 16px; border-radius: 20px; background: #fff; border: 1px solid #e4e7ed;
  font-size: 13px; color: #6e6e73; cursor: pointer; transition: all .2s; }
.portal-aichat .prompt-chip:hover { border-color: var(--portal-primary); color: var(--portal-primary); background: rgba(13,148,136,.04); transform: translateY(-1px); }
.portal-aichat .chat-window { background: #fff; border: 1px solid #e4e7ed; border-radius: 20px; box-shadow: 0 12px 48px rgba(0,0,0,.1); overflow: hidden; }
.portal-aichat .chat-header { display: flex; align-items: center; gap: 12px; padding: 16px 20px; background: #fff; border-bottom: 1px solid #e4e7ed; }
.portal-aichat .chat-avatar { width: 36px; height: 36px; border-radius: 10px; background: linear-gradient(135deg, var(--portal-primary), var(--portal-primary-light));
  color: #fff; display: flex; align-items: center; justify-content: center; font-weight: 700; font-size: 14px; }
.portal-aichat .chat-name { font-weight: 600; font-size: 15px; color: #1d1d1f; }
.portal-aichat .chat-status { font-size: 12px; color: #16a34a; }
.portal-aichat .chat-body { padding: 20px; min-height: 200px; max-height: 280px; overflow-y: auto; display: flex; flex-direction: column; gap: 14px; background: #f5f5f7; }
.portal-aichat .chat-msg { display: flex; gap: 10px; max-width: 90%; }
.portal-aichat .chat-msg.bot .bubble { background: #fff; color: #1d1d1f; border: 1px solid #e4e7ed; border-bottom-left-radius: 4px; }
.portal-aichat .chat-msg .bubble { padding: 10px 14px; border-radius: 14px; font-size: 13px; line-height: 1.6; }
.portal-aichat .chat-footer { padding: 12px 16px; border-top: 1px solid #e4e7ed; display: flex; gap: 10px; background: #fff; }
.portal-aichat .chat-footer input { flex: 1; padding: 11px 16px; border-radius: 10px; border: 1px solid #e4e7ed; font-size: 14px; outline: none; transition: border-color .2s; }
.portal-aichat .chat-footer input:focus { border-color: var(--portal-primary); }
.portal-aichat .chat-footer .send { width: 42px; height: 42px; border-radius: 10px; border: none;
  background: linear-gradient(135deg, var(--portal-primary), var(--portal-primary-light)); color: #fff; cursor: pointer; font-size: 16px; }
.portal-aichat .chat-note { text-align: center; font-size: 12px; color: #86868b; margin-top: 10px; }

/* ========== 核心能力 ========== */
.portal-cap { background: #fff; }
.portal-cap .cap-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; }
.portal-cap .cap-card { padding: 40px 32px; border-radius: 16px; background: #fff; border: 1px solid #e4e7ed; transition: all .3s; text-align: center; }
.portal-cap .cap-card:hover { transform: translateY(-4px); box-shadow: 0 8px 30px rgba(0,0,0,.08); border-color: rgba(13,148,136,.2); }
.portal-cap .cap-icon { width: 56px; height: 56px; border-radius: 14px; display: flex; align-items: center; justify-content: center;
  font-size: 28px; margin: 0 auto 20px; background: linear-gradient(135deg, rgba(13,148,136,.1), rgba(94,234,212,.1)); color: var(--portal-primary); }
.portal-cap .cap-card h3 { font-size: 20px; margin: 0 0 12px; font-weight: 600; color: #1d1d1f; }
.portal-cap .cap-card p { color: #6e6e73; line-height: 1.7; font-size: 14px; margin: 0; }

/* ========== personaPost（紫色点缀，对齐 oldWww 人格化区） ========== */
.portal-persona { background: linear-gradient(135deg, #faf5ff 0%, #ede9fe 30%, #f5f5f7 100%); }
.portal-persona .persona-inner { display: grid; grid-template-columns: 1.1fr .9fr; gap: 60px; align-items: center; }
.portal-persona .persona-badge { display: inline-flex; align-items: center; gap: 6px; padding: 6px 16px; border-radius: 20px;
  background: rgba(217,119,6,.1); color: var(--portal-accent); font-size: 13px; font-weight: 500; margin-bottom: 20px; }
.portal-persona .persona-title { font-size: 36px; margin: 0 0 16px; font-weight: 700; color: #1d1d1f; letter-spacing: -0.01em; line-height: 1.3; }
.portal-persona .persona-title .dot { color: var(--portal-accent); }
.portal-persona .persona-desc { color: #6e6e73; line-height: 1.8; font-size: 15px; margin: 0 0 24px; }
.portal-persona .persona-desc .hl { color: var(--portal-accent); font-weight: 500; }
.portal-persona .persona-features { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-bottom: 28px; }
.portal-persona .persona-feat { display: inline-flex; align-items: center; gap: 6px; padding: 6px 14px; border-radius: 8px;
  background: rgba(217,119,6,.06); border: 1px solid rgba(217,119,6,.12); font-size: 13px; color: var(--portal-accent); font-weight: 500; }
.portal-persona .persona-actions { display: flex; align-items: center; gap: 16px; flex-wrap: wrap; }
.portal-persona .persona-note { font-size: 13px; color: #86868b; }
.portal-persona .persona-visual { position: relative; }
.portal-persona .persona-bubble { background: #fff; border-radius: 12px; padding: 10px 14px; margin-bottom: 14px;
  border: 1px solid #e4e7ed; display: flex; gap: 10px; align-items: flex-start; }
.portal-persona .persona-bubble .av { width: 32px; height: 32px; border-radius: 8px; flex-shrink: 0; color: #fff;
  display: flex; align-items: center; justify-content: center; font-weight: 600; font-size: 14px; }
.portal-persona .persona-bubble .txt { font-size: 13px; line-height: 1.6; color: #6e6e73; }

/* ========== 产品矩阵（渐变条 + 品牌色柔光 + hover 微交互） ========== */
.portal-apps { background: #f5f5f7; }
.portal-apps .app-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 28px; }
.portal-apps .app-card {
  position: relative;
  display: flex;
  flex-direction: column;
  padding: 32px;
  border-radius: 20px;
  border: 1px solid #e4e7ed;
  background: #fff;
  overflow: hidden;
  transition: transform .35s cubic-bezier(.4,0,.2,1), box-shadow .35s, border-color .35s;
}
/* 顶部品牌色渐变条 */
.portal-apps .app-card::before {
  content: "";
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 4px;
  background: linear-gradient(90deg, var(--app-color, var(--portal-primary)), rgba(13,148,136,.12));
  transition: height .3s;
}
/* hover 柔光（品牌色径向渐变，默认不可见） */
.portal-apps .app-card::after {
  content: "";
  position: absolute;
  top: -40%; right: -20%;
  width: 55%; height: 180%;
  background: radial-gradient(ellipse, var(--app-color, var(--portal-primary)), transparent 70%);
  opacity: 0;
  transition: opacity .35s;
  pointer-events: none;
  z-index: 0;
}
.portal-apps .app-card:hover {
  transform: translateY(-6px);
  box-shadow: 0 20px 50px rgba(0,0,0,.1);
  border-color: rgba(13,148,136,.2);
}
.portal-apps .app-card:hover::before { height: 6px; }
.portal-apps .app-card:hover::after { opacity: .08; }
/* 内容置于柔光之上 */
.portal-apps .app-head, .portal-apps .app-desc, .portal-apps .app-tags, .portal-apps .app-action { position: relative; z-index: 1; }

.portal-apps .app-head { display: flex; gap: 16px; align-items: center; margin-bottom: 18px; }
.portal-apps .app-head > div:not(.app-icon) { flex: 1; min-width: 0; }
.portal-apps .app-icon {
  width: 52px; height: 52px;
  border-radius: 14px;
  background: color-mix(in srgb, var(--app-color, var(--portal-primary)) 12%, #fff);
  color: var(--app-color, var(--portal-primary));
  border: 1px solid color-mix(in srgb, var(--app-color, var(--portal-primary)) 22%, transparent);
  flex-shrink: 0;
  display: flex; align-items: center; justify-content: center;
  font-size: 24px;
  transition: transform .35s cubic-bezier(.4,0,.2,1), background .25s, border-color .25s;
}
.portal-apps .app-card:hover .app-icon { transform: scale(1.06) rotate(-3deg); background: color-mix(in srgb, var(--app-color, var(--portal-primary)) 18%, #fff); border-color: color-mix(in srgb, var(--app-color, var(--portal-primary)) 32%, transparent); }
.portal-apps .app-name {
  font-size: 19px; font-weight: 600;
  display: flex; align-items: center; gap: 10px;
  margin: 0 0 4px;
  color: #1d1d1f;
}
.portal-apps .app-tag-status {
  font-size: 12px;
  padding: 3px 10px 3px 8px;
  border-radius: 999px;
  font-weight: 500;
  display: inline-flex; align-items: center; gap: 5px;
  white-space: nowrap;
}
.portal-apps .app-tag-status::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: currentColor; }
.portal-apps .app-tag-status.online { background: #f0fdf4; color: #16a34a; }
.portal-apps .app-tag-status.coming { background: #fff7ed; color: #d97706; }
.portal-apps .app-subtitle { color: #86868b; font-size: 13px; }
.portal-apps .app-desc { color: #6e6e73; line-height: 1.75; font-size: 14px; margin: 0 0 20px; }
.portal-apps .app-tags { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 24px; }
.portal-apps .app-feature {
  font-size: 12px;
  padding: 5px 12px;
  border-radius: 8px;
  background: #f5f5f7;
  color: #6e6e73;
  transition: background .2s;
}
.portal-apps .app-feature.cat { background: rgba(13,148,136,.08); color: var(--portal-primary); font-weight: 600; }
.portal-apps .app-card:hover .app-feature { background: #eef0f3; }
.portal-apps .app-card:hover .app-feature.cat { background: rgba(13,148,136,.12); }
/* CTA：文字链接 + 箭头滑动（比满色按钮更精致） */
.portal-apps .app-action {
  display: inline-flex; align-items: center; gap: 6px;
  margin-top: auto;
  align-self: flex-start;
  padding: 0;
  font-size: 14px; font-weight: 600;
  text-decoration: none;
  color: var(--app-color, var(--portal-primary));
  transition: gap .2s;
}
.portal-apps .app-action:hover { gap: 12px; }
.portal-apps .app-action.coming { color: #aaaeb3; cursor: default; }
.portal-apps .app-action.coming:hover { gap: 6px; }

/* ========== 平台数据（浅色 + 蓝数字） ========== */
.portal-stats { background: #fff; }
.portal-stats .stats-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 32px; padding: 48px 0; }
.portal-stats .stat-item { text-align: center; }
.portal-stats .stat-value { font-size: 44px; font-weight: 700; color: var(--portal-primary); line-height: 1.1; margin-bottom: 8px; font-variant-numeric: tabular-nums; }
.portal-stats .stat-label { font-size: 15px; color: #6e6e73; }

/* ========== CTA（浅蓝渐变 + 蓝色 emphasis 主按钮，无深色块） ========== */
.portal-cta { padding: 80px 0; text-align: center; color: #1d1d1f;
  background: linear-gradient(160deg, #eef4ff 0%, #f5f9ff 50%, #f5f5f7 100%); }
.portal-cta .cta-title { font-size: 32px; font-weight: 700; margin: 0 0 12px; color: #1d1d1f; }
.portal-cta .cta-subtitle { font-size: 16px; color: #6e6e73; max-width: 600px; margin: 0 auto 32px; line-height: 1.7; }
.portal-cta .cta-actions { display: flex; gap: 16px; justify-content: center; flex-wrap: wrap; }
.portal-cta .portal-btn--white { background: var(--portal-primary); color: #fff; box-shadow: 0 4px 12px rgba(13,148,136,.25); }
.portal-cta .portal-btn--white:hover { background: var(--portal-primary-dark); transform: translateY(-1px); box-shadow: 0 6px 16px rgba(13,148,136,.3); }
.portal-cta .portal-btn--outline { background: #fff; color: #1d1d1f; border: 1px solid #e4e7ed; }
.portal-cta .portal-btn--outline:hover { background: #f5f5f7; }

/* ========== 响应式 ========== */
@media (max-width: 900px) {
  .portal-hero { padding: 110px 0 80px; }
  .portal-hero h1 { font-size: 38px; }
  .portal-aichat .aichat-inner, .portal-persona .persona-inner { grid-template-columns: 1fr; gap: 40px; }
  .portal-cap .cap-grid { grid-template-columns: 1fr; }
  .portal-apps .app-grid { grid-template-columns: 1fr; }
  .portal-stats .stats-grid { grid-template-columns: repeat(2, 1fr); gap: 36px; }
  .portal-home .section { padding: 64px 0; }
}

/* ========== 通用页面（hero 缩小版 + prose + FAQ） ========== */
.portal-hero--sm { padding: 120px 0 80px; }
.portal-hero--sm h1 { font-size: 42px; }
.portal-prose { max-width: 760px; margin: 0 auto; }
.portal-prose p { font-size: 15px; line-height: 1.8; color: #6e6e73; margin: 0 0 18px; }
.portal-prose strong { color: #1d1d1f; }
.portal-contact { font-size: 17px; color: rgba(255,255,255,.92); }
.portal-contact a { color: #fff; text-decoration: underline; }

/* FAQ 折叠（原生 details/summary） */
.portal-faq { max-width: 820px; margin: 0 auto; }
.portal-faq-item { background: #fff; border: 1px solid #e4e7ed; border-radius: 12px; margin-bottom: 14px; overflow: hidden; transition: box-shadow .2s; }
.portal-faq-item[open] { box-shadow: 0 4px 12px rgba(0,0,0,.06); border-color: transparent; }
.portal-faq-item summary { padding: 18px 22px; font-size: 16px; font-weight: 600; cursor: pointer; list-style: none; display: flex; justify-content: space-between; align-items: center; color: #1d1d1f; }
.portal-faq-item summary::-webkit-details-marker { display: none; }
.portal-faq-item summary::after { content: "+"; font-size: 24px; color: var(--portal-primary); font-weight: 300; transition: transform .2s; }
.portal-faq-item[open] summary::after { transform: rotate(45deg); }
.portal-faq-answer { padding: 0 22px 20px; color: #6e6e73; line-height: 1.8; font-size: 15px; }
.portal-faq-answer a { color: var(--portal-primary); }

/* ========== Pricing 定价方案 ========== */
.portal-pricing-grid { display: grid; grid-template-columns: repeat(3,1fr); gap: 28px; max-width: 1080px; margin: 0 auto; }
.portal-pricing-card { background: #fff; border: 1px solid #e4e7ed; border-radius: 16px; padding: 36px 28px; display: flex; flex-direction: column; transition: all .3s; }
.portal-pricing-card:hover { transform: translateY(-6px); box-shadow: 0 8px 30px rgba(0,0,0,.08); }
.portal-pricing-card.featured { border: 2px solid var(--portal-primary); box-shadow: 0 12px 48px rgba(13,148,136,.18); position: relative; }
.portal-pricing-card.featured::before { content: "推荐"; position: absolute; top: -13px; left: 50%; transform: translateX(-50%); background: var(--portal-primary); color: #fff; font-size: 12px; font-weight: 700; padding: 4px 16px; border-radius: 999px; white-space: nowrap; }
.portal-pricing-name { font-size: 20px; font-weight: 600; margin: 0 0 8px; color: #1d1d1f; }
.portal-pricing-price { font-size: 42px; font-weight: 700; color: #1d1d1f; margin: 12px 0; }
.portal-pricing-price .unit { font-size: 15px; color: #86868b; font-weight: 500; }
.portal-pricing-price.custom { font-size: 28px; color: var(--portal-primary); }
.portal-pricing-desc { color: #6e6e73; font-size: 14px; margin: 0 0 22px; }
.portal-pricing-features { list-style: none; padding: 0; margin: 0 0 26px; flex: 1; }
.portal-pricing-features li { padding: 8px 0 8px 26px; color: #1d1d1f; font-size: 14px; position: relative; }
.portal-pricing-features li::before { content: "✓"; position: absolute; left: 0; color: #16a34a; font-weight: 700; }
.portal-pricing-features li.disabled { color: #c7c7cc; }
.portal-pricing-features li.disabled::before { content: "—"; color: #c7c7cc; }
.portal-pricing-btn { display: block; text-align: center; padding: 12px; border-radius: 980px; font-weight: 500; text-decoration: none; transition: all .2s; }
.portal-pricing-btn.primary { background: var(--portal-primary); color: #fff; }
.portal-pricing-btn.primary:hover { background: var(--portal-primary-dark); transform: translateY(-1px); }
.portal-pricing-btn.ghost { background: #f5f5f7; color: #1d1d1f; }
.portal-pricing-btn.ghost:hover { background: #e8ecef; }
@media (max-width:900px) { .portal-pricing-grid { grid-template-columns: 1fr; } }

/* 首页公开 AI 对话 — 用户气泡与交互态 */
.portal-aichat .chat-msg.user { align-self: flex-end; flex-direction: row-reverse; }
.portal-aichat .chat-msg.user .bubble { background: linear-gradient(135deg, var(--portal-primary), var(--portal-primary-light)); color: #fff; border: none; border-radius: 14px; border-bottom-right-radius: 4px; }
.portal-aichat .chat-footer .send:disabled,
.portal-aichat .chat-footer input:disabled { opacity: .5; cursor: not-allowed; background: #f5f5f7; }

/* ========== 预约咨询表单（about 页）========== */
.portal-consult { background: #f8fafc; }
.consult-form {
  max-width: 720px; margin: 0 auto;
  background: #fff; border-radius: 20px;
  padding: 36px 40px;
  box-shadow: 0 8px 40px rgba(15,23,42,.06);
  border: 1px solid #eef2f4;
}
.consult-row { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; }
.consult-field { margin-bottom: 18px; }
.consult-field:last-child { margin-bottom: 0; }
.consult-field label { display: block; font-size: 14px; font-weight: 500; color: #1d1d1f; margin-bottom: 8px; }
.consult-field .req { color: #ef4444; margin-left: 2px; }
.consult-field input,
.consult-field select,
.consult-field textarea {
  width: 100%; padding: 11px 14px;
  border: 1px solid #d2d6db; border-radius: 10px;
  font-size: 15px; color: #1d1d1f; background: #fff;
  transition: border-color .2s, box-shadow .2s;
  font-family: inherit;
}
.consult-field textarea { resize: vertical; min-height: 80px; }
.consult-field input::placeholder,
.consult-field textarea::placeholder { color: #9ca3af; }
.consult-field input:focus,
.consult-field select:focus,
.consult-field textarea:focus {
  outline: none; border-color: var(--portal-primary);
  box-shadow: 0 0 0 3px rgba(13,148,136,.12);
}
.consult-actions { display: flex; align-items: center; gap: 16px; margin-top: 6px; flex-wrap: wrap; }
.consult-msg { font-size: 14px; min-height: 20px; }
.consult-msg.is-ok { color: #16a34a; }
.consult-msg.is-error { color: #ef4444; }
.consult-note { font-size: 12px; color: #9ca3af; margin: 16px 0 0; text-align: center; }
@media (max-width:640px) {
  .consult-form { padding: 24px 20px; }
  .consult-row { grid-template-columns: 1fr; gap: 0; }
}
