/* Controls shared by masters and future PWA adapter. No business state. */
.mp-ui-check-row,.mp-ui-switch-row{display:flex;align-items:center;gap:12px;min-height:52px;padding:12px;border:1px solid var(--mp-ui-stroke);border-radius:14px;background:var(--mp-ui-surface);color:var(--mp-ui-ink);cursor:pointer}
.mp-ui-check-row input{width:22px;height:22px;accent-color:var(--mp-ui-green);flex:none}
.mp-ui-check-row span{min-width:0}.mp-ui-check-row strong{display:block;font-weight:600}.mp-ui-check-row small{display:block;color:var(--mp-ui-muted);font-size:12px;margin-top:4px}
.mp-ui-check-row:has(input:checked){border-color:var(--mp-ui-green);background:var(--mp-ui-mint)}
.mp-ui-check-row:has(input:disabled),.mp-ui-switch-row:has(input:disabled){opacity:.55;cursor:not-allowed}
.mp-ui-switch-row{justify-content:space-between}.mp-ui-switch-row input{appearance:none;width:44px;height:28px;border-radius:99px;background:var(--mp-ui-track);position:relative;flex:none;cursor:pointer;border:1px solid var(--mp-ui-control-stroke);margin:0}
.mp-ui-switch-row input::before{content:'';position:absolute;width:20px;height:20px;left:3px;top:3px;background:var(--mp-ui-surface);border-radius:50%}.mp-ui-switch-row input:checked{background:var(--mp-ui-green);border-color:var(--mp-ui-green)}.mp-ui-switch-row input:checked::before{left:19px}
.mp-ui-filter-chip{border:1px solid var(--mp-ui-stroke);background:var(--mp-ui-surface);color:var(--mp-ui-ink);border-radius:99px;padding:10px 16px;min-height:44px;font:600 13px var(--mp-ui-font-body)}.mp-ui-filter-chip[aria-pressed=true]{background:var(--mp-ui-green);color:var(--mp-ui-on-accent);border-color:var(--mp-ui-green)}
.mp-ui-badge{display:inline-flex;align-items:center;gap:4px;padding:5px 9px;border-radius:99px;font:600 11px var(--mp-ui-font-body);background:var(--mp-ui-mint);color:var(--mp-ui-green)}.mp-ui-badge--error{background:var(--mp-ui-danger-soft);color:var(--mp-ui-danger)}.mp-ui-badge--warning{background:var(--mp-ui-warning-soft);color:var(--mp-ui-warning)}
.mp-ui-upload{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;min-height:144px;border:1px dashed var(--mp-ui-control-stroke);border-radius:20px;padding:20px;background:var(--mp-ui-surface);cursor:pointer;text-align:center;color:var(--mp-ui-ink)}.mp-ui-upload input{max-width:100%;font-size:12px;min-height:44px}.mp-ui-upload small{font-size:12px;color:var(--mp-ui-muted)}
.mp-ui-skeleton{display:grid;gap:10px}.mp-ui-skeleton span{display:block;height:20px;border-radius:8px;background:var(--mp-ui-track)}.mp-ui-skeleton span:last-child{width:68%}
.mp-ui-toast{display:flex;align-items:center;gap:12px;padding:14px 16px;background:var(--mp-ui-green);color:var(--mp-ui-on-accent);border-radius:16px;font:500 14px var(--mp-ui-font-body)}
.mp-ui-setting-row{display:flex;align-items:center;justify-content:space-between;gap:14px;width:100%;min-height:68px;padding:14px 16px;border:1px solid var(--mp-ui-stroke);border-radius:16px;background:var(--mp-ui-surface);color:var(--mp-ui-ink);text-align:left;font:inherit}.mp-ui-setting-row>span{min-width:0}.mp-ui-setting-row strong{display:block;font-size:14px;font-weight:600}.mp-ui-setting-row small{display:block;margin-top:4px;font-size:12px;color:var(--mp-ui-muted)}.mp-ui-setting-row>.mp-ui-icon{flex:none}
.mp-ui-key-value{display:flex;justify-content:space-between;gap:16px;padding:12px 0;border-bottom:1px solid var(--mp-ui-stroke);font-size:14px}.mp-ui-key-value strong{text-align:right}.mp-ui-key-value span{color:var(--mp-ui-muted)}
.mp-ui-camera-placeholder{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;min-height:230px;border:1px solid var(--mp-ui-control-stroke);border-radius:24px;background:var(--mp-ui-camera-bg);color:var(--mp-ui-on-accent)}.mp-ui-camera-placeholder>span{display:grid;place-items:center;border:2px solid currentColor;width:100px;height:100px;border-radius:16px}.mp-ui-camera-placeholder small{font-size:12px}
.mp-ui-field select,.mp-ui-field textarea{font:inherit;color:var(--mp-ui-ink);width:100%;max-width:100%}.mp-ui-field textarea{min-height:120px;padding:12px;resize:vertical}
.mp-ui-app-shell input:focus-visible,.mp-ui-app-shell select:focus-visible,.mp-ui-app-shell textarea:focus-visible{outline:2px solid var(--mp-ui-green);outline-offset:3px}
@media(prefers-reduced-motion:reduce){.mp-ui-switch-row input,.mp-ui-filter-chip{transition:none}}
