/* 全アプリの入力幅。新規画面・動的モーダルも内容別の同じ上限を使う。 */
body :is(input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]):not([type="button"]):not([type="submit"]):not([type="image"]), select, textarea) {
  box-sizing: border-box;
  min-width: 0;
  max-width: min(100%, var(--gs-control-width, 320px)) !important;
}
body input:is([type="text"], :not([type])) { --gs-control-width: 280px; }
body input:is([type="number"]) { --gs-control-width: 128px; }
body input:is([type="date"], [type="month"]) { --gs-control-width: 176px; }
body input:is([type="time"]) { --gs-control-width: 136px; }
body input:is([type="color"]) { --gs-control-width: 64px; }
body input:is([type="tel"]) { --gs-control-width: 200px; }
body input:is([type="file"], [type="search"]) { --gs-control-width: 280px; }
body select { --gs-control-width: 200px; }
body textarea { --gs-control-width: 480px; }
/* 長さが決まる情報は短く、名称・メール・住所は読める幅を確保する。 */
body input:is([id*="code" i], [name*="code" i], [id*="subdomain" i], [name*="subdomain" i], [id*="planid" i], [name="seat"]) { --gs-control-width: 180px; }
body input:is([id*="postal" i], [name*="postal" i], [id="reset-code"]) { --gs-control-width: 128px; }
body input:is([id*="address" i], [name*="address" i]) { --gs-control-width: 480px; }
body input:is([id*="name" i], [name*="name" i], [id*="kana" i], [name*="kana" i], [name="affiliation"], [name="temple"], [name="district"], [name="venue"]) { --gs-control-width: 280px; }
body select:is([id*="status" i], [name="status"], [id="printCard"], [id="eventType"]) { --gs-control-width: 176px; }
body select:is([id="clientFilterSelect"], [id="coupon-client"], [id="coupon-filter-client"], [aria-label="クライアント"], [name="venue"], :has(option[value="client_reception"])) { --gs-control-width: 280px; }
body #eventVenue { --gs-control-width: 280px; }
body #staff-event { --gs-control-width: 320px; }
body #coupon-duration { --gs-control-width: 240px; }
body #coupon-value, body #coupon-maximum { --gs-control-width: 104px; }
body :is(.input-with-prefix, .input-with-suffix) { max-width: min(100%, 320px); }
/* 検索はアイコンを含む外枠も伸ばさない。 */
body :is(.search-box, .search-box-compact, .admin-search) {
  width: min(280px, 100%) !important;
  max-width: 280px !important;
  min-width: 0 !important;
  flex: 0 1 280px !important;
}
body :is(#attendeeSearch, #searchInput, #userSearchInput, #staff-search) { --gs-control-width: 280px; }
#staff-search-form { grid-template-columns: minmax(0, 280px) auto auto; }

/* 枠内アイコン・単位や送信ボタンも入力幅に揃える。 */
body .input-wrapper { max-width: min(100%, 320px); }
body :is(.login-form, #loginForm, .reset-form) { max-width: 320px; margin-inline: auto; }
body :is(.input-with-prefix, .input-with-suffix):has(input[type="number"]) { width: min(100%, 180px); max-width: 180px; }

body select:is([id*="plan" i]) { --gs-control-width: 240px; }
body select:is([id*="status" i], [name="status"]) { --gs-control-width: 176px; }
@media (max-width: 700px) {
  #staff-search-form { grid-template-columns: repeat(2, minmax(0, 1fr)); max-width: 280px; }
}

body input:is([id$="Count" i], [name$="_count"]) { --gs-control-width: 128px; }
