.icon[data-v-54523c8d]{vertical-align:middle;flex-shrink:0;display:inline-block}:root{--brand-50:#fff7ed;--brand-100:#ffedd5;--brand-200:#fed7aa;--brand-300:#fdba74;--brand-400:#fb923c;--brand-500:#f97316;--brand-600:#ea580c;--brand-700:#c2410c;--brand-800:#9a3412;--brand-900:#7c2d12;--neutral-50:#f8fafc;--neutral-100:#f1f5f9;--neutral-200:#e2e8f0;--neutral-300:#cbd5e1;--neutral-400:#94a3b8;--neutral-500:#64748b;--neutral-600:#475569;--neutral-700:#334155;--neutral-800:#1e293b;--neutral-900:#0f172a;--color-primary:var(--brand-500);--color-primary-hover:var(--brand-600);--color-primary-active:var(--brand-700);--color-primary-soft:var(--brand-100);--color-primary-fg:#fff;--color-focus-ring:#f9731647;--color-success:#16a34a;--color-success-soft:#dcfce7;--color-success-fg:#fff;--color-danger:#dc2626;--color-danger-soft:#fee2e2;--color-danger-fg:#fff;--color-warning:#d97706;--color-warning-soft:#fef3c7;--color-warning-fg:#fff;--color-info:#0284c7;--color-info-soft:#e0f2fe;--color-info-fg:#fff;--bg-page:var(--neutral-50);--bg-surface:#fff;--bg-soft:var(--neutral-100);--bg-overlay:#0f172a8f;--bg-overlay-soft:#0f172a14;--bg-toast:#0f172aeb;--border-default:var(--neutral-200);--border-strong:var(--neutral-300);--border-divider:var(--neutral-100);--border-danger:#fecaca;--text-strong:var(--neutral-900);--text-default:var(--neutral-800);--text-muted:var(--neutral-500);--text-subtle:var(--neutral-400);--text-on-brand:#fff;--temp-cold:#0ea5e9;--temp-warm:var(--brand-500);--temp-hot:#dc2626;--sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:20px;--sp-6:24px;--sp-7:32px;--sp-8:40px;--sp-9:56px;--r-xs:4px;--r-sm:6px;--r-md:10px;--r-lg:14px;--r-xl:18px;--r-2xl:24px;--r-pill:999px;--elev-0:none;--elev-1:0 1px 2px #0f172a0f, 0 1px 1px #0f172a0a;--elev-2:0 4px 12px #0f172a0f, 0 2px 4px #0f172a0a;--elev-3:0 10px 24px #0f172a14, 0 4px 8px #0f172a0a;--elev-4:0 16px 32px #0f172a1f, 0 6px 12px #0f172a0f;--elev-glow:0 12px 28px #f9731647;--elev-glow-soft:0 8px 20px #f973162e;--font-system:-apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace;--fs-12:12px;--fs-13:13px;--fs-14:14px;--fs-15:15px;--fs-16:16px;--fs-17:17px;--fs-18:18px;--fs-20:20px;--fs-22:22px;--fs-24:24px;--fs-28:28px;--fs-32:32px;--fw-regular:400;--fw-medium:500;--fw-semibold:600;--fw-bold:700;--lh-tight:1.2;--lh-normal:1.5;--lh-loose:1.7;--t-fast:.12s;--t-base:.2s;--t-slow:.32s;--ease:cubic-bezier(.2, .8, .2, 1);--content-max:720px;--topbar-h:56px;--bottom-bar-h:80px}*{box-sizing:border-box}body{background:var(--bg-page);min-width:320px;color:var(--text-default);font-family:var(--font-system);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0}button,input,select{font:inherit}button{border:0}.page{min-height:100vh;padding:18px 14px 28px}.topbar{max-width:var(--content-max);justify-content:space-between;align-items:center;gap:12px;margin:0 auto 14px;display:flex}.topbar>div:first-child{flex:auto;min-width:0}.topbar>.header-actions{flex-shrink:0}.title{font-size:var(--fs-22);font-weight:var(--fw-bold);color:var(--text-strong);margin:0}.subtitle{color:var(--text-muted);font-size:var(--fs-13);margin:4px 0 0}.link-btn{color:var(--color-primary);font-weight:var(--fw-semibold);white-space:nowrap;background:0 0;padding:8px 10px}.header-actions{flex-shrink:0;align-items:center;gap:8px;display:flex}.panel{max-width:var(--content-max);padding:var(--sp-4);background:var(--bg-surface);border:1px solid var(--border-default);border-radius:var(--r-lg);box-shadow:var(--elev-1);margin:0 auto 14px}.panel--elevated{box-shadow:var(--elev-2)}.panel-title{font-size:var(--fs-17);font-weight:var(--fw-bold);color:var(--text-strong);margin:0 0 14px}.section-note{color:var(--text-muted);font-size:var(--fs-12);margin:0 0 8px;display:block}.field{margin-bottom:14px}.field label{color:var(--text-default);font-size:var(--fs-14);font-weight:var(--fw-medium);margin-bottom:7px;display:block}.field-helper{color:var(--text-muted);font-size:var(--fs-12);margin-top:6px;display:block}.field-error{color:var(--color-danger);font-size:var(--fs-13)}.input-row{gap:8px;display:flex}.input-row.device-id-row{gap:6px}.input{border:1px solid var(--border-strong);border-radius:var(--r-md);background:var(--bg-surface);width:100%;min-width:0;height:44px;color:var(--text-strong);transition:border-color var(--t-fast) var(--ease), box-shadow var(--t-fast) var(--ease);outline:none;padding:0 12px}.input:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-focus-ring)}.input--invalid{border-color:var(--color-danger)}.input--invalid:focus{box-shadow:0 0 0 3px #dc26262e}.device-id-input{font-family:var(--font-mono);letter-spacing:0;padding:0 9px;font-size:13px}.scan-btn,.primary-btn,.secondary-btn{border-radius:var(--r-md);cursor:pointer;height:44px;transition:background var(--t-fast) var(--ease), color var(--t-fast) var(--ease), border-color var(--t-fast) var(--ease), box-shadow var(--t-fast) var(--ease), transform var(--t-fast) var(--ease);justify-content:center;align-items:center;gap:6px;display:inline-flex}.scan-btn:active,.primary-btn:active,.secondary-btn:active,.danger-btn:active{transform:translateY(1px)}.scan-btn{background:var(--color-primary-soft);color:var(--color-primary);font-weight:var(--fw-semibold);flex:0 0 76px}.scan-btn:hover{background:var(--brand-200)}.device-id-action-btn{flex:0 0 52px;padding:0 4px}.ocr-btn{flex-basis:104px}.scan-btn:disabled{color:var(--text-subtle);background:var(--bg-soft);cursor:not-allowed}.hidden-file{display:none}.primary-btn{background:var(--color-primary);width:100%;color:var(--text-on-brand);font-weight:var(--fw-bold);box-shadow:var(--elev-glow-soft)}.primary-btn:hover:not(:disabled){background:var(--color-primary-hover);box-shadow:var(--elev-glow)}.primary-btn:disabled{background:var(--neutral-400);box-shadow:none}.secondary-btn{background:var(--bg-surface);color:var(--text-default);border:1px solid var(--border-default);padding:0 14px}.secondary-btn:hover:not(:disabled){border-color:var(--color-primary);color:var(--color-primary)}.danger-btn{border-radius:var(--r-md);background:var(--color-danger-soft);height:44px;color:var(--color-danger);cursor:pointer;font-weight:var(--fw-semibold);transition:background var(--t-fast) var(--ease), color var(--t-fast) var(--ease);justify-content:center;align-items:center;gap:6px;padding:0 14px;display:inline-flex}.danger-btn:hover:not(:disabled){background:#fecaca}.danger-btn:disabled,.secondary-btn:disabled{color:var(--text-subtle);cursor:not-allowed}.message{color:var(--color-danger);font-size:var(--fs-14);margin:10px 0 0}.success{color:var(--color-success)}.login-wrap{background:radial-gradient(circle at 50% 0%, var(--brand-100) 0%, var(--neutral-50) 60%);align-items:center;min-height:100vh;padding:18px 14px;display:flex}.filter-grid{grid-template-columns:1fr 150px 92px;gap:10px;display:grid}.select-input{appearance:none}.filter-btn{width:auto}.device-list{max-width:var(--content-max);margin:0 auto}.device-list-page{padding-bottom:calc(96px + env(safe-area-inset-bottom,0px))}.scan-fab{z-index:8;background:var(--color-primary);height:52px;color:var(--text-on-brand);font-weight:var(--fw-bold);box-shadow:var(--elev-glow);cursor:pointer;transition:background var(--t-fast) var(--ease), box-shadow var(--t-fast) var(--ease), transform var(--t-fast) var(--ease);border-radius:26px;justify-content:center;align-items:center;gap:6px;padding:0 20px;display:inline-flex;position:fixed;bottom:24px;right:20px}.scan-fab:hover{background:var(--color-primary-hover)}.scan-fab:active{transform:translateY(1px)}.device-card,.log-card{padding:var(--sp-4);border:1px solid var(--border-default);border-radius:var(--r-lg);background:var(--bg-surface);box-shadow:var(--elev-1);margin-bottom:12px}.device-card{cursor:pointer;transition:border-color var(--t-fast) var(--ease), box-shadow var(--t-fast) var(--ease)}.device-card:hover{border-color:var(--brand-200);box-shadow:var(--elev-2)}.device-card-head,.log-card-head,.status-head{justify-content:space-between;align-items:center;gap:12px;display:flex}.device-label{color:var(--text-muted);font-size:var(--fs-12);margin-bottom:4px}.device-title{font-size:var(--fs-18);color:var(--text-strong);margin:0}.status-pill{border-radius:var(--r-pill);background:var(--bg-soft);color:var(--text-default);font-size:var(--fs-12);font-weight:var(--fw-bold);flex:none;align-items:center;gap:6px;padding:5px 9px;display:inline-flex}.status-pill__dot{background:currentColor;border-radius:50%;width:8px;height:8px}.status-pill.online{background:var(--color-success-soft);color:var(--color-success)}.status-pill.offline{background:var(--bg-soft);color:var(--text-muted)}.status-pill.fault,.status-pill.disabled{background:var(--color-danger-soft);color:var(--color-danger)}.status-pill.unknown{background:var(--color-warning-soft);color:var(--color-warning)}.device-info-row{color:var(--text-muted);font-size:var(--fs-14);justify-content:space-between;gap:12px;margin-top:12px;display:flex}.device-info-row strong{color:var(--text-strong);text-align:right;word-break:break-all}.device-name-row{align-items:center;gap:10px;min-width:0;margin-top:12px;display:flex}.device-name-row__label{color:var(--text-muted);font-size:var(--fs-12);flex:none}.device-name-row__value{min-width:0;color:var(--text-strong);font-size:var(--fs-14);font-weight:var(--fw-bold);white-space:nowrap;text-overflow:ellipsis;flex:auto;overflow:hidden}.device-info-grid{color:var(--text-muted);font-size:var(--fs-13);grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 14px;margin-top:12px;display:grid}.device-info-cell{justify-content:space-between;align-items:center;gap:10px;min-width:0;display:flex}.device-info-cell strong{color:var(--text-strong);font-size:var(--fs-14);text-align:right;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.device-card-actions{grid-template-columns:1fr 1fr;gap:10px;margin-top:16px;display:grid}.empty-state{color:var(--text-muted);text-align:center;flex-direction:column;align-items:center;gap:12px;padding:28px 12px;display:flex}.empty-state__icon{background:var(--color-primary-soft);width:64px;height:64px;color:var(--color-primary);border-radius:50%;justify-content:center;align-items:center;display:inline-flex}.empty-state__title{color:var(--text-strong);font-size:var(--fs-15);font-weight:var(--fw-semibold);margin:0}.empty-state__cta{border-radius:var(--r-md);width:auto;height:40px;margin-top:4px;padding:0 18px}.load-more-state{color:var(--text-muted);font-size:var(--fs-13);text-align:center;padding:18px 12px 4px}.device-card--skeleton{background:linear-gradient(90deg, var(--neutral-100) 0%, var(--neutral-200) 50%, var(--neutral-100) 100%);background-size:200% 100%;height:138px;animation:1.4s linear infinite shimmer}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.control-shell{padding-bottom:calc(142px + env(safe-area-inset-bottom,0px))}.control-topbar{align-items:flex-start;gap:12px}.control-title-block{flex-direction:column;flex:auto;gap:2px;min-width:0;display:flex}.control-title-eyebrow{color:var(--text-muted);font-size:var(--fs-12);font-weight:var(--fw-medium);letter-spacing:.02em}.control-title{min-width:0;font-size:var(--fs-20);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.inner-topbar{margin-bottom:10px}.toast-layer{z-index:40;border-radius:var(--r-pill);background:var(--bg-toast);color:#fff;max-width:min(88vw,360px);font-size:var(--fs-14);font-weight:var(--fw-semibold);text-align:center;box-shadow:var(--elev-3);animation:toast-pop var(--t-base) var(--ease);padding:11px 16px;line-height:1.4;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%)}.toast-layer.error{background:#dc2626f5}.toast-layer.warning{background:#d97706f5}@keyframes toast-pop{0%{opacity:0;transform:translate(-50%,calc(8px - 50%))}to{opacity:1;transform:translate(-50%,-50%)}}.device-status-panel{max-width:var(--content-max);border-radius:var(--r-xl);background:var(--bg-surface);box-shadow:var(--elev-2);margin:0 auto 14px;position:relative;overflow:hidden}.status-panel-banner{background:linear-gradient(135deg, var(--brand-500) 0%, var(--brand-400) 100%);color:#fff;justify-content:space-between;align-items:flex-start;gap:12px;padding:18px;display:flex;position:relative;overflow:hidden}.status-panel-banner:after{content:"";pointer-events:none;background:radial-gradient(circle,#ffffff38 0%,#fff0 70%);width:140px;height:140px;position:absolute;top:-20px;right:-20px}.status-panel-copy{z-index:1;min-width:0;position:relative}.device-status-title{font-size:var(--fs-28);word-break:break-all;line-height:1.18;font-weight:var(--fw-bold);letter-spacing:.01em;margin:0}.device-status-code{color:#ffffffe0;font-size:var(--fs-13);font-weight:var(--fw-semibold);word-break:break-all;margin:8px 0 0}.device-online-badge{z-index:1;border-radius:var(--r-pill);color:#fff;min-height:30px;font-size:var(--fs-13);font-weight:var(--fw-bold);background:#ffffff38;flex:none;align-items:center;gap:6px;padding:0 12px;line-height:30px;display:inline-flex;position:relative}.device-online-badge.online{background:#16a34aeb;box-shadow:0 0 0 4px #ffffff2e}.device-online-badge.offline{background:#4754678c}.banner-status__dot{background:#fff;border-radius:50%;width:8px;height:8px}.device-online-badge.online .banner-status__dot{animation:1.4s ease-in-out infinite pulse-dot}@keyframes pulse-dot{0%,to{opacity:1;transform:scale(1)}50%{opacity:.6;transform:scale(1.4)}}.status-metric-grid{border-bottom:1px solid var(--border-divider);grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.status-metric-item{text-align:center;min-width:0;padding:14px 10px 16px}.status-metric-item+.status-metric-item{border-left:1px solid var(--border-divider)}.status-metric-label,.log-block span{color:var(--text-muted);font-size:var(--fs-12);margin:0 0 8px;display:block}.status-metric-value{color:var(--text-strong);font-size:var(--fs-24);font-weight:var(--fw-bold);justify-content:center;align-items:baseline;line-height:1.1;display:inline-flex}.status-metric-value.temperature{color:var(--temp-warm)}.status-metric-value.temperature.hot{color:var(--temp-hot)}.status-metric-value__unit{color:var(--text-muted);font-size:var(--fs-13);font-weight:var(--fw-medium);margin-left:2px}.status-query-row{padding:14px 16px 16px}.latest-update-text{color:var(--text-muted);font-size:var(--fs-13);margin-bottom:10px;display:block}.status-query-btn{width:100%}.control-form-panel{padding-bottom:18px}.maintenance-panel{border-color:#fecaca;border-left:3px solid var(--color-danger)}.maintenance-heading{justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:14px;display:flex}.maintenance-heading .panel-title,.maintenance-heading .section-note{margin-bottom:0}.maintenance-device-id{border-radius:var(--r-pill);background:var(--brand-50);max-width:46%;color:var(--brand-800);border:1px solid var(--brand-200);font-size:11px;font-weight:var(--fw-bold);word-break:break-all;font-family:var(--font-mono);padding:5px 10px}.maintenance-action-grid{grid-template-columns:1fr;gap:9px;display:grid}.maintenance-action-btn{text-align:left;flex-direction:column;justify-content:center;align-items:flex-start;gap:4px;width:100%;height:auto;min-height:66px;padding:12px 14px;display:flex;position:relative}.maintenance-action-btn strong{font-size:var(--fs-14)}.maintenance-action-btn span{font-size:var(--fs-12);font-weight:var(--fw-regular);opacity:.78;line-height:1.4}.maintenance-action-btn__icon{color:var(--text-subtle);position:absolute;top:50%;right:12px;transform:translateY(-50%)}.maintenance-command-entry{min-width:0}.maintenance-command-entry>.maintenance-action-btn{height:100%}.maintenance-panel .modal-mask.maintenance-command-mask{z-index:60}.maintenance-command-modal{width:min(520px,100%)}.maintenance-command-modal .modal-head{align-items:flex-start}.maintenance-command-modal .section-note{margin:4px 0 0}.command-field{margin-top:12px;display:block}.command-field>span{color:var(--text-default);font-size:var(--fs-13);font-weight:var(--fw-bold);margin-bottom:6px;display:block}.command-description{border-radius:var(--r-md);background:var(--brand-50);border-left:3px solid var(--color-primary);flex-direction:column;gap:4px;margin-top:12px;padding:12px;display:flex}.command-description strong{color:var(--text-strong);font-size:var(--fs-14)}.command-description span{color:var(--text-muted);font-size:var(--fs-12)}.command-identity-field{border:1px solid var(--color-danger);border-radius:var(--r-md);background:var(--color-danger-soft);padding:12px}.command-preview-btn{width:100%;margin-top:14px}.maintenance-panel .modal-mask.maintenance-command-confirm{z-index:70}.maintenance-panel .maintenance-command-confirm .modal-title,.maintenance-panel .maintenance-command-confirm .alert-message{text-align:left}.maintenance-panel .modal-mask.maintenance-command-result{z-index:80}.maintenance-replace-block{border-top:1px solid var(--border-divider);margin-top:14px;padding-top:14px}.maintenance-replace-block>label{color:var(--text-default);font-size:var(--fs-14);font-weight:var(--fw-bold);margin-bottom:8px;display:block}.maintenance-replace-btn{width:100%;margin-top:9px}.maintenance-message{color:var(--color-success);font-size:var(--fs-13);word-break:break-word;margin:12px 0 0;line-height:1.5}.maintenance-message.error{color:var(--color-danger)}.maintenance-message.warning{color:#b54708}.maintenance-message.info{color:#175cd3}.maintenance-panel .modal-mask{z-index:50}.mode-tabs{background:var(--bg-soft);border-radius:var(--r-pill);border:1px solid var(--border-default);gap:0;margin-bottom:14px;padding:4px;display:inline-flex}.mode-tabs__btn{border-radius:var(--r-pill);height:36px;color:var(--text-muted);font-size:var(--fs-14);font-weight:var(--fw-semibold);cursor:pointer;transition:background var(--t-fast) var(--ease), color var(--t-fast) var(--ease), box-shadow var(--t-fast) var(--ease);background:0 0;flex:auto;justify-content:center;align-items:center;gap:6px;padding:0 18px;display:inline-flex}.mode-tabs__btn.active{background:var(--bg-surface);color:var(--color-primary);box-shadow:var(--elev-1)}.mode-tabs .active{background:var(--bg-surface);color:var(--color-primary);font-weight:var(--fw-bold);box-shadow:var(--elev-1)}.kebab-drawer-panel{margin:0 0 14px}.kebab-drawer-grid{grid-template-columns:1fr;gap:10px;display:grid}.drawer-card{border:1px solid var(--border-default);border-radius:var(--r-lg);background:var(--bg-surface);min-width:0;box-shadow:var(--elev-1);grid-template-columns:auto minmax(0,1fr) auto;grid-template-areas:"icon title pill""count count count";align-items:center;gap:10px 12px;padding:12px 14px;display:grid}.drawer-card__icon{border-radius:var(--r-md);background:var(--color-primary-soft);width:32px;height:32px;color:var(--color-primary);grid-area:icon;justify-content:center;align-items:center;display:inline-flex}.drawer-card__icon .icon{display:block}.drawer-card__icon{border-radius:var(--r-md);background:var(--brand-50);width:36px;height:36px;color:var(--color-primary);flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.drawer-title{min-width:0;color:var(--text-strong);font-size:var(--fs-14);font-weight:var(--fw-bold);white-space:nowrap;text-overflow:ellipsis;grid-area:title;overflow:hidden}.drawer-state-pill{border-radius:var(--r-pill);background:var(--bg-soft);color:var(--text-muted);font-size:11px;font-weight:var(--fw-bold);white-space:nowrap;flex:none;grid-area:pill;justify-self:end;padding:2px 9px;line-height:18px}.drawer-state-pill.open{background:var(--color-success-soft);color:var(--color-success)}.drawer-state-pill.closed{background:var(--bg-soft);color:var(--text-muted)}.drawer-state-pill.unknown{background:var(--color-warning-soft);color:var(--color-warning)}.drawer-count-row{grid-area:count;grid-template-columns:minmax(0,1fr) 88px;align-items:center;gap:8px;min-width:0;display:grid}.drawer-count-value{min-width:0;color:var(--text-strong);font-size:var(--fs-15);font-weight:var(--fw-bold);white-space:nowrap}.drawer-open-btn{width:100%;min-width:0;height:36px;font-size:var(--fs-13);font-weight:var(--fw-bold);padding:0 8px}.compact-field{margin-bottom:12px}.compact-field label{font-weight:var(--fw-semibold)}.input-with-unit{position:relative}.input-with-unit .input{padding-right:52px}.unit-tag{color:var(--text-muted);font-size:var(--fs-13);pointer-events:none;font-weight:var(--fw-medium);position:absolute;top:50%;right:14px;transform:translateY(-50%)}.ratio-inline-block{align-items:center;gap:12px;margin-top:6px;display:flex}.ratio-inline-label{color:var(--text-default);font-size:var(--fs-14);font-weight:var(--fw-semibold);flex:none}.ratio-inline-list{flex:auto;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;display:grid}.ratio-inline-item{min-width:0;color:var(--text-default);font-size:var(--fs-13);border:1px solid var(--border-default);border-radius:var(--r-md);background:var(--bg-surface);grid-template-columns:auto minmax(0,1fr);align-items:center;gap:6px;padding:6px 10px;display:grid}.ratio-inline-input{text-align:center;min-width:0;height:32px;font-weight:var(--fw-semibold);color:var(--text-strong);background:0 0;border:0;padding:0 8px}.ratio-inline-input:focus{outline:none}.bottom-control-drawer{z-index:12;width:min(100%,720px);padding-bottom:env(safe-area-inset-bottom,0px);margin:0 auto;position:fixed;bottom:0;left:0;right:0}.more-actions-backdrop{z-index:1;padding:0 14px calc(94px + env(safe-area-inset-bottom,0px));animation:fade-in var(--t-base) var(--ease);background:#0f172a14;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.more-actions-sheet{background:var(--bg-surface);width:min(100%,720px);box-shadow:var(--elev-3);animation:sheet-rise var(--t-base) var(--ease);border-radius:18px 18px 12px 12px;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;padding:14px;display:grid}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes sheet-rise{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.more-sheet-btn{width:100%;min-width:0;padding:0 8px}.bottom-action-strip{z-index:2;background:var(--bg-surface);border-top:1px solid var(--border-default);border-radius:18px 18px 0 0;grid-template-columns:minmax(0,.78fr) minmax(0,1fr) minmax(0,1fr);gap:12px;padding:14px;display:grid;position:relative;box-shadow:0 -10px 28px #0f172a14}.bottom-action-strip .primary-btn,.bottom-action-strip .danger-btn,.bottom-action-strip .secondary-btn{width:100%;min-width:0;height:50px;padding:0 10px}.more-trigger-btn.active{background:var(--brand-50);color:var(--color-primary);font-weight:var(--fw-bold);border-color:var(--brand-200)}.strip-stop-btn{background:var(--color-danger-soft);color:var(--color-danger)}.strip-start-btn{background:var(--color-primary);color:var(--text-on-brand);box-shadow:var(--elev-glow-soft)}.log-type-tabs{grid-template-columns:1fr 1fr;gap:8px;margin-bottom:16px;display:grid}.log-type-tabs .active,.log-direction-filters .active{background:var(--brand-50);color:var(--color-primary);border-color:var(--brand-200);font-weight:var(--fw-bold)}.log-direction-filters{grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:14px;display:grid}.log-summary{min-width:0;line-height:1.55}.log-direction{border-radius:var(--r-pill);font-size:11px;font-weight:var(--fw-bold);flex:none;padding:4px 9px}.log-direction.platform_down{background:var(--color-info-soft);color:var(--color-info)}.log-direction.device_report{background:var(--color-success-soft);color:var(--color-success)}.log-status.pending{color:var(--color-warning)}.log-result-note{color:var(--color-info);font-size:var(--fs-12);font-weight:var(--fw-bold);margin-top:10px}.secondary-log-value pre,.response-entry-block pre{background:var(--bg-soft)}.log-time{color:var(--text-muted);font-size:var(--fs-12);margin-top:4px}.log-status{font-size:var(--fs-13);font-weight:var(--fw-bold)}.log-status.error{color:var(--color-danger)}.log-block{margin-top:12px}.log-block pre{border-radius:var(--r-md);background:var(--bg-soft);color:var(--text-default);font-size:var(--fs-12);font-family:var(--font-mono);white-space:pre-wrap;word-break:break-word;margin:0;padding:10px;overflow:auto}.record-list{gap:10px;display:grid}.record{border:1px solid var(--border-default);border-radius:var(--r-lg);background:var(--bg-surface);box-shadow:var(--elev-1);flex-direction:column;gap:6px;padding:14px;display:flex}.record-main{font-weight:var(--fw-bold);color:var(--text-strong);font-size:var(--fs-15);justify-content:space-between;gap:10px;margin-bottom:0;display:flex}.record-main__id{font-family:var(--font-mono);color:var(--brand-700)}.record-sub{color:var(--text-muted);font-size:var(--fs-13);word-break:break-all}.empty{color:var(--text-subtle);text-align:center;padding:18px 0}.pager{justify-content:center;align-items:center;gap:14px;margin-top:14px;display:flex}.modal-mask{z-index:10;background:var(--bg-overlay);animation:fade-in var(--t-base) var(--ease);justify-content:center;align-items:center;padding:18px;display:flex;position:fixed;inset:0}.modal{border-radius:var(--r-xl);background:var(--bg-surface);width:min(460px,100%);max-height:calc(100dvh - 36px);box-shadow:var(--elev-4);animation:sheet-rise var(--t-base) var(--ease);padding:20px;overflow-y:auto}.qr-scan-modal{width:min(520px,100%)}.modal-head{justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;display:flex}.modal-title{font-size:var(--fs-17);font-weight:var(--fw-bold);color:var(--text-strong);margin:0}.modal__icon{background:var(--color-primary-soft);width:44px;height:44px;color:var(--color-primary);border-radius:50%;justify-content:center;align-items:center;margin:0 auto 12px;display:inline-flex}.modal__icon.success{background:var(--color-success-soft);color:var(--color-success)}.modal__icon.warning{background:var(--color-warning-soft);color:var(--color-warning)}.modal__icon.error{background:var(--color-danger-soft);color:var(--color-danger)}.alert-dialog{text-align:center}.alert-message{color:var(--text-default);white-space:pre-line;margin:14px 0 18px;line-height:1.6}.confirm-actions{grid-template-columns:1fr 1fr;gap:10px;display:grid}.close-btn{background:var(--bg-soft);width:34px;height:34px;color:var(--text-default);cursor:pointer;transition:background var(--t-fast) var(--ease);border-radius:50%;justify-content:center;align-items:center;display:inline-flex}.close-btn:hover{background:var(--neutral-200)}.device-qr-video{object-fit:cover;border-radius:var(--r-md);background:var(--neutral-900);width:100%;height:clamp(240px,52vh,380px);min-height:220px;display:block;overflow:hidden}.scan-tip{color:var(--text-muted);font-size:var(--fs-13);margin:10px 0 0;line-height:1.5}.scanner-alternative-actions{grid-template-columns:1fr 1fr;gap:10px;margin-top:12px;display:grid}.scanner-alternative-actions .secondary-btn{width:100%}.loading-mask{z-index:9;background:#0f172a6b;justify-content:center;align-items:center;padding:18px;display:flex;position:fixed;inset:0}.loading-box{border-radius:var(--r-lg);background:var(--bg-surface);text-align:center;width:min(220px,100%);box-shadow:var(--elev-3);padding:22px 18px}.loading-spinner{border:3px solid var(--neutral-200);border-top-color:var(--color-primary);border-radius:50%;width:34px;height:34px;margin:0 auto 12px;animation:.8s linear infinite loading-spin}.loading-text{color:var(--text-default);font-size:var(--fs-14);line-height:1.5}@keyframes loading-spin{to{transform:rotate(360deg)}}.icon{vertical-align:middle;flex-shrink:0;display:inline-block}.auth-card{background:var(--bg-surface);border:1px solid var(--border-default);border-radius:var(--r-xl);max-width:420px;box-shadow:var(--elev-3);margin:0 auto;padding:28px 24px}.auth-card__brand{border-radius:var(--r-lg);background:linear-gradient(135deg, var(--brand-500) 0%, var(--brand-400) 100%);width:56px;height:56px;color:var(--text-on-brand);box-shadow:var(--elev-glow-soft);justify-content:center;align-items:center;margin:0 auto 16px;display:inline-flex}.auth-card__tagline{text-align:center;color:var(--text-muted);font-size:var(--fs-13);margin:6px 0 22px}.filter-bar{flex-direction:column;gap:8px;display:flex}.filter-bar__field{position:relative}.filter-bar__icon{color:var(--text-subtle);pointer-events:none;position:absolute;top:50%;left:12px;transform:translateY(-50%)}.filter-bar__field .input{padding-left:36px}.field-with-icon{position:relative}.field-with-icon .input{padding-left:36px}.field-with-icon__icon{color:var(--text-subtle);pointer-events:none;position:absolute;top:50%;left:12px;transform:translateY(-50%)}@media (width<=560px){.topbar{align-items:flex-start;gap:10px}.filter-grid{grid-template-columns:1fr}.device-status-title{font-size:22px}}@media (width>=560px){.maintenance-action-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width>=768px){.page{padding-top:28px}}
