/* 可复用移动端补充组件：独立于规范舞台。 */
.ui-stack{display:grid;gap:14px}.ui-card{background:var(--card,#fff);border:1px solid var(--border,#eee);border-radius:var(--radius,12px);padding:16px;min-width:0}.ui-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.ui-row>*{min-width:0}.ui-label{display:grid;gap:8px;font-size:var(--fs-body,14px);color:var(--text,#222)}.ui-input{box-sizing:border-box;width:100%;min-width:0;border:1px solid var(--border,#ddd);border-radius:8px;padding:12px;background:var(--card,#fff);font:inherit;color:var(--text,#222)}.ui-input:focus{outline:2px solid var(--primary);outline-offset:2px}.ui-input[aria-invalid=true]{border-color:var(--color-error-main,#f53f3f)}.ui-input:disabled{background:var(--page-bg);color:var(--text-3)}.ui-help{font-size:12px;line-height:1.6;color:var(--text-2,#666);margin:6px 0}.ui-error{font-size:12px;color:var(--color-error-main,#f53f3f);margin:4px 0}.ui-btn{border:0;border-radius:999px;padding:10px 18px;min-height:44px;font:inherit;font-weight:600;background:var(--primary-soft,#ecf4ff);color:var(--primary,#4086f5);cursor:pointer}.ui-btn--primary{background:var(--cta-gradient,var(--primary));color:white;box-shadow:0 6px 16px color-mix(in srgb,var(--primary) 18%,transparent)}.ui-btn--danger{background:var(--color-error-light,#fff0f0);color:var(--color-error-main,#f53f3f)}.ui-btn--text{background:transparent;padding-inline:8px}.ui-btn--small{min-height:36px;padding:7px 12px;font-size:12px}.ui-btn:disabled,.btn-primary:disabled,.btn-secondary:disabled{opacity:.45;cursor:not-allowed;box-shadow:none;filter:grayscale(.25)}.ui-state{text-align:center;padding:26px 16px}.ui-state svg{width:48px;height:48px;color:var(--primary);margin-bottom:10px}.ui-state h3{font-size:16px;margin:0 0 8px}.ui-state p{color:var(--text-2);font-size:13px;line-height:1.7;margin:0 0 16px}.ui-spinner{display:inline-block;width:16px;height:16px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;vertical-align:middle;animation:ui-spin .8s linear infinite;margin-right:6px}.ui-skeleton{height:14px;border-radius:6px;background:linear-gradient(90deg,#edf0f4,#fafbfc,#edf0f4);background-size:200% 100%;animation:ui-shimmer 1.4s linear infinite;margin:12px 0}.ui-skeleton:nth-child(2){width:65%}.ui-check{display:flex;align-items:center;gap:10px;min-height:44px;font-size:14px}.ui-check input{width:18px;height:18px;accent-color:var(--primary);flex-shrink:0}.ui-search{display:flex;align-items:center;gap:8px}.ui-search .ui-input{flex:1;width:0}.ui-list{padding:0;margin:0;list-style:none}.ui-list li{padding:14px 0;border-bottom:1px solid var(--border);font-size:14px}.ui-toast{position:fixed;z-index:10000;top:45%;left:50%;transform:translate(-50%,-50%);max-width:80%;border-radius:10px;padding:14px 20px;background:#222e;color:white;text-align:center;font-size:14px;pointer-events:none}.ui-dialog{box-sizing:border-box;border:0;border-radius:18px;padding:20px;width:min(392px,calc(100vw - 32px));max-height:82vh;overflow:auto;background:var(--card,#fff);color:var(--text,#222);font-family:inherit}.ui-dialog::backdrop{background:#0006}.ui-dialog h3{margin:0 0 16px;font-size:17px}.ui-dialog form{display:grid;gap:14px}.ui-dialog .ui-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:16px}.ui-dialog--bottom{position:fixed;inset:auto 0 0;width:min(100%,448px);margin:0 auto;border-radius:18px 18px 0 0;padding-bottom:calc(20px + env(safe-area-inset-bottom))}.ui-dialog--image{width:calc(100vw - 20px);max-width:700px;background:#161b22;color:#fff}.ui-dialog--image img{display:block;width:100%;max-height:60vh;object-fit:contain}.ui-dialog button:focus-visible,.ui-btn:focus-visible{outline:2px solid var(--primary);outline-offset:3px}.ui-picker-options{display:grid;gap:8px;max-height:40vh;overflow:auto}.ui-picker-option{display:flex;gap:8px;align-items:center;padding:12px;border:1px solid var(--border);border-radius:8px}.ui-picker-option input{accent-color:var(--primary)}.ui-badge{padding:4px 8px;border-radius:5px;background:var(--primary-soft);color:var(--primary);font-size:12px}.ui-badge--error{color:var(--color-error-main,#f53f3f);background:var(--color-error-light,#fff0f0)}.ui-timeline{list-style:none;padding:0 0 0 10px;margin:0}.ui-timeline li{position:relative;border-left:2px solid var(--border);padding:0 0 22px 20px;font-size:14px}.ui-timeline li:before{content:'';position:absolute;left:-6px;top:5px;width:10px;height:10px;border-radius:50%;background:var(--primary)}.ui-timeline .is-error:before{background:var(--color-error-main,#f53f3f)}.ui-timeline time{display:block;font-size:12px;color:var(--text-3);margin-top:6px}.ui-step{padding:10px;border-left:3px solid var(--primary);background:var(--primary-soft);font-size:13px}.ui-step--error{border-color:var(--color-error-main);background:var(--color-error-light)}.ui-chart{width:100%;display:block;color:var(--primary)}.ui-chart text{fill:var(--text-2);font-size:11px}.ui-chart rect{fill:var(--primary);cursor:pointer}.ui-chart rect:focus{outline:2px solid var(--primary-dark)}.ui-thumbs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.ui-photo{position:relative;min-width:0}.ui-photo img{width:100%;aspect-ratio:1;object-fit:cover;border-radius:8px;cursor:zoom-in}.ui-photo .ui-btn{position:absolute;right:3px;top:3px;padding:3px 7px;min-height:28px;background:#222c;color:white}.ui-upload{border:1px dashed var(--primary);border-radius:8px;padding:18px 8px;display:grid;place-items:center;background:var(--primary-soft);color:var(--primary);font-size:13px;cursor:pointer}.ui-upload input{max-width:100%;font-size:11px}.ui-native-switch{appearance:none;width:44px;height:26px;border-radius:13px;background:#ccc;position:relative;vertical-align:middle;cursor:pointer}.ui-native-switch:before{content:'';position:absolute;left:3px;top:3px;width:20px;height:20px;background:white;border-radius:50%;transition:transform .15s}.ui-native-switch:checked{background:var(--primary)}.ui-native-switch:checked:before{transform:translateX(18px)}.ui-native-switch:disabled{opacity:.4}.ui-range{accent-color:var(--primary);width:100%}.ui-progress{accent-color:var(--primary);width:100%;height:10px}@keyframes ui-spin{to{transform:rotate(360deg)}}@keyframes ui-shimmer{to{background-position:-200% 0}}@media(prefers-reduced-motion:reduce){.ui-spinner,.ui-skeleton{animation:none}}[hidden]{display:none!important}
