/* ═══════════════════════════════════════════════════════════════════
   SITU · Inputs · Textareas · Selects
   ───────────────────────────────────────────────────────────────────
   两层（同 situ-buttons.css 套路）:
     A. 全站 polish — 仅添加大多 page 未设属性
        (::placeholder opacity / :disabled / [readonly] / aria-invalid)
     B. Canonical .input / .textarea / .select 系统

   有意 NOT 做的事:
     - 不强制 font-size: 16px（避免 iOS Safari zoom）—— 不动
       page 视觉，留给未来 mobile pass 处理
     - 不动 Chrome autofill（背景渲染特殊，处理不当文字隐形）
     - 不动 <select> 原生箭头（appearance:none 会破坏 OS 默认）
     - 不碰 checkbox / radio / range / file / date / color
   ═══════════════════════════════════════════════════════════════════ */


/* ═════════════════════════════════════════════════════════════════
   A · Global Polish · 安全添加
   ═════════════════════════════════════════════════════════════════ */

/* Firefox 默认 placeholder 是 50% opacity。所有浏览器统一到 100%，
   颜色完全由 page 决定。 */
input::placeholder,
textarea::placeholder {
  opacity: 1;
}

/* :disabled 一致体验 — 大多 page 没系统设过 */
input:disabled,
textarea:disabled,
select:disabled {
  opacity: 0.5;
  cursor: not-allowed;
  pointer-events: none;
}

/* :read-only 轻微弱化（仅限文本类输入） */
input[readonly]:not([readonly=""]):not([readonly="false"]):not([type="checkbox"]):not([type="radio"]),
textarea[readonly] {
  opacity: 0.7;
  cursor: default;
}

/* 表单验证错误 — 通过 aria-invalid 钩子。
   page 自己定 invalid 视觉时这条不参与（它没人设）；
   而对设了 aria-invalid="true" 但没视觉的 page，给一条统一红边。 */
input[aria-invalid="true"]:not([type="checkbox"]):not([type="radio"]),
textarea[aria-invalid="true"],
select[aria-invalid="true"] {
  border-color: #c84a3a;
}
input[aria-invalid="true"]:focus-visible:not([type="checkbox"]):not([type="radio"]),
textarea[aria-invalid="true"]:focus-visible,
select[aria-invalid="true"]:focus-visible {
  outline-color: #c84a3a;
}

/* 移动端 tap 高亮统一去除 —— 大部分 page 没设 */
input,
textarea,
select {
  -webkit-tap-highlight-color: transparent;
}


/* ═════════════════════════════════════════════════════════════════
   B · Canonical · 新代码用
   ═════════════════════════════════════════════════════════════════ */

/* ── .input · 文本类输入（text / email / password / search / number / tel / url） ── */
.input,
input.input,
textarea.textarea,
select.select {
  display: block;
  width: 100%;
  box-sizing: border-box;

  padding: 12px 14px;
  font: 400 var(--t-sm, 14px) / 1.45 var(--f-body, inherit);
  letter-spacing: var(--ls-normal, 0);
  color: inherit;

  background: rgba(243, 234, 212, 0.06);
  border: 1px solid var(--rule, rgba(157, 130, 89, 0.22));
  border-radius: var(--r-md, 10px);

  outline: none;
  transition: border-color var(--dur-fast, 200ms) var(--ease, ease),
              background-color var(--dur-fast, 200ms) var(--ease, ease),
              box-shadow var(--dur-fast, 200ms) var(--ease, ease);
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none;
}

/* placeholder 颜色统一弱化 */
.input::placeholder,
input.input::placeholder,
textarea.textarea::placeholder {
  color: var(--ink-3, currentColor);
  opacity: 0.55;
}

/* :hover 微微提亮 */
.input:hover:not(:disabled):not(:focus),
input.input:hover:not(:disabled):not(:focus),
textarea.textarea:hover:not(:disabled):not(:focus),
select.select:hover:not(:disabled):not(:focus) {
  background: rgba(243, 234, 212, 0.09);
  border-color: rgba(var(--aura-rgb, 200, 145, 47), 0.35);
}

/* :focus — 鼠标和键盘都要看到，所以用 :focus 不是 :focus-visible */
.input:focus,
input.input:focus,
textarea.textarea:focus,
select.select:focus {
  border-color: var(--aura, currentColor);
  background: rgba(243, 234, 212, 0.10);
  box-shadow: 0 0 0 3px rgba(var(--aura-rgb, 200, 145, 47), 0.12);
}

/* ── .textarea — 单独的 resize 控制 ── */
textarea.textarea {
  resize: vertical;
  min-height: 92px;
  line-height: 1.55;
}

/* ── .select — 加自定义箭头（appearance: none 之后箭头消失） ── */
select.select {
  padding-right: 36px;
  background-image:
    linear-gradient(45deg, transparent 50%, currentColor 50%),
    linear-gradient(135deg, currentColor 50%, transparent 50%);
  background-position:
    calc(100% - 18px) calc(50% - 2px),
    calc(100% - 13px) calc(50% - 2px);
  background-size: 5px 5px, 5px 5px;
  background-repeat: no-repeat;
  cursor: pointer;
}

/* ── Size modifiers ── */
.input--sm,
input.input--sm,
textarea.textarea--sm,
select.select--sm {
  padding: 8px 11px;
  font-size: var(--t-xs, 12px);
  border-radius: var(--r-sm, 6px);
}
.input--lg,
input.input--lg,
textarea.textarea--lg,
select.select--lg {
  padding: 16px 18px;
  font-size: var(--t-md, 16px);
  border-radius: var(--r-md, 10px);
}

/* ── Field wrapper · .field ──
   <div class="field">
     <label class="field-label" for="x">Email</label>
     <input id="x" class="input" />
     <div class="field-hint">We won't share</div>
   </div>
*/
.field {
  display: block;
  margin-bottom: var(--s-4, 16px);
}
.field-label {
  display: block;
  margin-bottom: var(--s-2, 8px);
  font: 500 var(--t-xs, 11px) / 1 var(--f-mono, inherit);
  letter-spacing: var(--ls-display, 0.12em);
  text-transform: uppercase;
  color: var(--ink-3, currentColor);
}
.field-hint {
  margin-top: var(--s-2, 6px);
  font: 400 var(--t-xs, 11px) / 1.5 var(--f-body, inherit);
  color: var(--ink-3, currentColor);
}
.field-error {
  margin-top: var(--s-2, 6px);
  font: 500 var(--t-xs, 11px) / 1.5 var(--f-body, inherit);
  color: #c84a3a;
}

/* ── Input group · 一行 input + 按钮（搜索框、订阅框） ──
   <div class="input-group">
     <input class="input" />
     <button class="btn btn--primary">Go</button>
   </div>
*/
.input-group {
  display: flex;
  align-items: stretch;
  gap: 0;
}
.input-group > .input,
.input-group > input.input {
  border-top-right-radius: 0;
  border-bottom-right-radius: 0;
}
.input-group > .btn {
  border-top-left-radius: 0;
  border-bottom-left-radius: 0;
}


/* ─────────────────────────────────────────────────────────────────
   迁移指南（写给团队 & 后续维护者）:

   旧代码:
     <input type="email" />                       <!-- naked -->
     <div class="field">
       <label>Email</label>
       <input type="email" />
     </div>

   新等价:
     <input type="email" class="input" />

     <div class="field">
       <label class="field-label" for="email">Email</label>
       <input id="email" class="input" type="email" />
       <div class="field-hint">we won't share</div>
     </div>

   注意:
   1. 必须显式加 class="input" / "textarea" / "select"。无 class 时
      polish 只做最少加工（placeholder opacity / disabled / 等）。
   2. 现有 .field input 这类 page 局部定义可以保留，不与 .input 冲突。
   3. 表单验证用 aria-invalid="true"，红边自动出现。
   ───────────────────────────────────────────────────────────────── */
