.agripro-spin { margin-top: 1rem; }
.agripro-spin__open, .agripro-spin__dialog button { min-height: 44px; padding: .65rem 1rem; border: 1px solid #2c1630; border-radius: .4rem; background: #fff; color: #2c1630; font: inherit; font-weight: 600; cursor: pointer; }
.agripro-spin__open:focus-visible, .agripro-spin__dialog button:focus-visible, .agripro-spin__control input:focus-visible { outline: 3px solid #3d7726; outline-offset: 3px; }
.agripro-spin__dialog { box-sizing: border-box; width: min(1280px, calc(100% - 24px)); max-width: none; max-height: calc(100dvh - 24px); margin: auto; padding: 1rem; border: 0; border-radius: .65rem; background: #fff; color: #171717; overflow: auto; overscroll-behavior: contain; }
.agripro-spin__dialog::backdrop { background: rgb(0 0 0 / 60%); }
.agripro-spin__dialog header { display: flex; align-items: center; justify-content: space-between; gap: .75rem; position: sticky; top: -1rem; z-index: 1; padding: .4rem 0; background: #fff; }
.agripro-spin__dialog h2 { margin: 0; font-size: clamp(1.05rem, 3vw, 1.4rem); line-height: 1.35; }
.agripro-spin__dialog header button { flex-shrink: 0; }
.agripro-spin__frame { height: clamp(240px, 55dvh, 640px); overflow: hidden; touch-action: pan-y; user-select: none; cursor: grab; }
.agripro-spin__frame.is-zoomed { touch-action: none; }
.agripro-spin__frame:active { cursor: grabbing; }
.agripro-spin__frame img { display: block; width: 100%; height: 100%; max-width: none; object-fit: contain; pointer-events: none; transform-origin: center; }
.agripro-spin__control { display: grid; gap: .4rem; font-size: 1rem; }
.agripro-spin__control input { width: 100%; min-width: 0; min-height: 44px; margin: 0; accent-color: #357027; touch-action: pan-y; }
.agripro-spin__caption, .agripro-spin__dialog [role="status"] { font-size: .9rem; line-height: 1.5; margin: .6rem 0; }
.agripro-spin__dialog [role="status"]:empty { display: none; }
html.agripro-spin-modal-open { overflow: hidden; }
.agripro-spin__zoom { display: flex; align-items: center; justify-content: center; gap: .5rem; margin: .5rem 0; }
.agripro-spin__zoom output { min-width: 3.5rem; text-align: center; font-variant-numeric: tabular-nums; }
.agripro-spin__zoom button { min-width: 44px; }
.agripro-spin__zoom button:disabled { opacity: .45; cursor: default; }
@media (max-width: 600px) {
  .agripro-spin__dialog { width: calc(100% - 8px); max-height: calc(100dvh - 8px); padding: .5rem; }
  .agripro-spin__dialog header { top: -.5rem; }
  .agripro-spin__frame { height: clamp(240px, 48dvh, 480px); }
}
