*,:before,:after,::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border:0 solid #e5e7eb}:before,:after{--tw-content:""}html,:host{-webkit-text-size-adjust:100%;tab-size:4;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}body{line-height:inherit;margin:0}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-feature-settings:normal;font-variation-settings:normal;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-feature-settings:inherit;font-variation-settings:inherit;font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:#0000;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{margin:0;padding:0;list-style:none}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder{opacity:1;color:#9ca3af}textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.table{display:table}.resize{resize:both}.border{border-width:1px}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}:root{--bg:#f2f4f8;--surface:#fffc;--surface-solid:#fff;--surface-soft:#e9eefc;--text:#141b32;--text-muted:#59607a;--border-muted:#cad3e8;--brand:#0d6efd;--brand-soft:#dce8ff;--accent:#10b981;--shadow-soft:0 10px 30px #0d225414;--chart-1:#0d6efd;--chart-2:#10b981;--chart-3:#ff8a4c;--chart-ok:#10b981;--chart-bad:#f05252;color:var(--text);background-color:var(--bg);font-family:IBM Plex Sans TC,Noto Sans TC,Avenir Next,sans-serif}.dark{--bg:#070b17;--surface:#10182dcc;--surface-solid:#111a31;--surface-soft:#1b2a4d;--text:#e8eefc;--text-muted:#98a6c9;--border-muted:#2d416e;--brand:#5ca3ff;--brand-soft:#203b67;--accent:#28d49b;--shadow-soft:0 16px 36px #00000073;--chart-1:#5ca3ff;--chart-2:#28d49b;--chart-3:#f5b154;--chart-ok:#28d49b;--chart-bad:#ff7272;color:var(--text);background-color:var(--bg)}body{background:var(--bg);color:var(--text);background-image:radial-gradient(circle at 10% 0%, color-mix(in oklab, var(--brand) 22%, transparent), transparent 38%), radial-gradient(circle at 85% 5%, color-mix(in oklab, var(--accent) 18%, transparent), transparent 40%), linear-gradient(180deg, color-mix(in oklab, var(--bg) 90%, white), var(--bg));min-height:100vh;margin:0}.app-shell{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);grid-template-columns:274px 1fr;min-height:100vh;transition:grid-template-columns .28s cubic-bezier(.22,1,.36,1);display:grid}.app-shell.sidebar-collapsed{grid-template-columns:88px 1fr}.sidebar{border-right:1px solid var(--border-muted);background:color-mix(in oklab, var(--surface-solid) 92%, transparent);box-shadow:inset -1px 0 0 color-mix(in oklab, var(--border-muted) 65%, transparent);padding:22px 14px;transition:padding .28s cubic-bezier(.22,1,.36,1)}.sidebar-head{display:block}.brand-block{margin-bottom:16px;transition:margin .24s cubic-bezier(.22,1,.36,1)}.app-shell.sidebar-collapsed .sidebar{padding:18px 10px}.app-shell.sidebar-collapsed .brand-block{margin-bottom:8px}.sidebar-collapsible{gap:14px;display:grid}.app-shell.sidebar-collapsed .sidebar-collapsible{gap:10px}.sidebar-theme{border-top:1px solid color-mix(in oklab, var(--border-muted) 85%, transparent);padding-top:12px}.app-shell.sidebar-collapsed .sidebar-theme{display:none}.brand-kicker{letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted);margin:0;font-size:.72rem}.brand-subtitle{color:var(--text-muted);margin:4px 0 0;font-size:.86rem}.sidebar h1{margin:6px 0 0;font-size:1.45rem}.app-shell.sidebar-collapsed .brand-kicker,.app-shell.sidebar-collapsed .brand-subtitle,.app-shell.sidebar-collapsed .sidebar h1{display:none}.sidebar nav{gap:10px;display:grid}.app-shell.sidebar-collapsed .sidebar nav{justify-items:center}.sidebar a,.sidebar a:visited{color:var(--text);border:1px solid #0000;border-radius:12px;align-items:center;gap:10px;padding:10px 12px;text-decoration:none;transition:all .18s;display:inline-flex}.app-shell.sidebar-collapsed .sidebar a,.app-shell.sidebar-collapsed .sidebar a:visited{justify-content:center;width:44px;padding:10px 0;position:relative}.app-shell.sidebar-collapsed .sidebar a span{display:none}.app-shell.sidebar-collapsed .sidebar a:after{content:attr(data-label);white-space:nowrap;pointer-events:none;opacity:0;color:var(--text);background:color-mix(in oklab, var(--surface-solid) 90%, var(--brand-soft));border:1px solid color-mix(in oklab, var(--brand) 22%, var(--border-muted));box-shadow:0 12px 26px color-mix(in oklab, var(--brand) 22%, transparent);z-index:5;border-radius:10px;padding:6px 10px;font-size:.8rem;font-weight:600;transition:opacity .18s,transform .2s cubic-bezier(.22,1,.36,1);position:absolute;top:50%;left:calc(100% + 12px);transform:translateY(-50%)translate(-4px)}.app-shell.sidebar-collapsed .sidebar a:hover:after,.app-shell.sidebar-collapsed .sidebar a:focus-visible:after{opacity:1;transform:translateY(-50%)translate(0)}.sidebar a:hover{background:var(--brand-soft);border-color:color-mix(in oklab, var(--brand) 30%, var(--border-muted));transform:translate(2px)}.sidebar a.active{background:var(--brand-soft);border-color:color-mix(in oklab, var(--brand) 38%, var(--border-muted));box-shadow:0 10px 22px color-mix(in oklab, var(--brand) 18%, transparent)}.content{padding:22px}.mobile-menu-backdrop{display:none}.topbar{justify-content:space-between;align-items:center;margin-bottom:20px;display:flex}.topbar-start{align-items:center;gap:12px;display:flex}.hamburger-btn{border:1px solid color-mix(in oklab, var(--border-muted) 80%, transparent);background:color-mix(in oklab, var(--surface-solid) 84%, transparent);color:var(--text);letter-spacing:.03em;text-transform:uppercase;box-shadow:0 8px 20px color-mix(in oklab, var(--brand) 14%, transparent);border-radius:999px;align-items:center;gap:8px;padding:8px 12px;font-size:.82rem;font-weight:700;transition:transform .22s cubic-bezier(.22,1,.36,1),box-shadow .22s,background .22s;display:inline-flex}.hamburger-btn:hover{background:color-mix(in oklab, var(--brand-soft) 62%, var(--surface-solid));box-shadow:0 10px 24px color-mix(in oklab, var(--brand) 20%, transparent);transform:translateY(-1px)}.topbar-title-wrap{gap:2px;display:grid}.topbar-kicker{color:var(--text-muted);letter-spacing:.08em;text-transform:uppercase;margin:0;font-size:.75rem}.topbar-title{margin:0;font-size:1.15rem;font-weight:700}.theme-select{border:1px solid var(--border-muted);background:var(--surface-solid);color:var(--text);border-radius:10px;padding:7px 9px}.theme-field{color:var(--text-muted);gap:8px;font-size:.88rem;display:grid}.page-grid{gap:18px;display:grid}.page-head{justify-content:space-between;align-items:center;gap:12px;display:flex}.page-title{margin:0}.page-subtitle{color:var(--text-muted);margin:6px 0 0}.stats-grid{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;display:grid}.card{background:var(--surface);border:1px solid var(--border-muted);box-shadow:var(--shadow-soft);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:16px;padding:15px}.two-column-grid{grid-template-columns:minmax(320px,420px) minmax(0,1fr);gap:18px;display:grid}.device-detail-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;display:grid}.section-head{justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:14px;display:flex}.section-head h3{margin:0}.section-subtitle{color:var(--text-muted);margin:6px 0 0;font-size:.92rem}.detail-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.detail-item{background:color-mix(in oklab, var(--surface-soft) 72%, transparent);border:1px solid color-mix(in oklab, var(--border-muted) 70%, transparent);border-radius:14px;gap:4px;padding:12px;display:grid}.detail-item span{color:var(--text-muted);font-size:.85rem}.detail-item strong{font-size:.98rem}.stats-card-head{justify-content:space-between;align-items:center;display:flex}.stats-card-icon{background:var(--brand-soft);width:30px;height:30px;color:var(--brand);border-radius:10px;justify-content:center;align-items:center;display:inline-flex}.stats-card-title{color:var(--text-muted)}.stats-card-value{margin:10px 0 0;font-size:1.65rem;font-weight:700}.chart-grid{grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:12px;display:grid}.chart-card h3{margin:0 0 8px;font-size:1rem}.chart-wrap{width:100%;height:280px}.table{border-collapse:collapse;width:100%}.table th,.table td{border-bottom:1px solid var(--border-muted);text-align:left;padding:12px 8px}.table th{color:var(--text-muted);font-size:.86rem;font-weight:600}.table-primary{font-weight:600}.table-secondary{color:var(--text-muted);margin-top:4px;font-size:.85rem}.table-link,.table-link:visited{color:var(--brand);font-weight:600;text-decoration:none}.table-link:hover{text-decoration:underline}.status-badge{border-radius:999px;align-items:center;padding:4px 10px;font-size:12px;display:inline-flex}.status-online{background:color-mix(in oklab, var(--chart-ok) 25%, transparent)}.status-updating{background:color-mix(in oklab, var(--chart-1) 25%, transparent)}.status-failed{background:color-mix(in oklab, var(--chart-bad) 25%, transparent)}.status-offline,.status-unknown{background:color-mix(in oklab, var(--text-muted) 18%, transparent)}.progress-wrap{background:var(--surface-soft);border-radius:999px;height:14px;position:relative;overflow:hidden}.progress-bar{background:linear-gradient(90deg, var(--brand), var(--chart-1));height:100%}.progress-label{color:var(--text-muted);margin-top:8px;display:inline-block}.timeline{margin:0;padding-left:20px}.input{border:1px solid var(--border-muted);background:var(--surface-solid);color:var(--text);border-radius:10px;padding:8px 10px}.btn{border:1px solid var(--brand);background:linear-gradient(120deg, var(--brand), color-mix(in oklab, var(--brand) 55%, var(--accent)));color:#fff;border-radius:10px;padding:8px 12px;transition:transform .14s,filter .14s}.btn:hover{filter:brightness(1.03);transform:translateY(-1px)}.form-grid{gap:8px;display:grid}.field-block{gap:6px;display:grid}.field-block span{color:var(--text-muted);font-size:.88rem}.field-block-wide{grid-column:1/-1}.textarea{resize:vertical;min-height:112px}.checkbox-row{align-items:center;gap:8px;display:flex}.checkbox-row span{color:var(--text)}.field-help{color:var(--text-muted)}.upload-summary{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:16px;display:grid}.mini-stat{background:color-mix(in oklab, var(--brand-soft) 55%, transparent);border:1px solid color-mix(in oklab, var(--brand) 22%, var(--border-muted));border-radius:14px;gap:4px;padding:12px;display:grid}.mini-stat span{color:var(--text-muted);font-size:.8rem}.mini-stat strong{font-size:1rem}.btn:disabled{cursor:not-allowed;opacity:.7;transform:none}.btn-secondary,.btn-secondary:visited{border-color:var(--border-muted);color:var(--text);background:0 0}.btn-secondary:hover{filter:none;background:var(--surface-soft)}.button-row{flex-wrap:wrap;gap:8px;display:flex}.feedback{border:1px solid var(--border-muted);border-radius:10px;margin:0;padding:10px 12px}.feedback-error{color:var(--chart-bad);background:color-mix(in oklab, var(--chart-bad) 12%, transparent)}.feedback-empty{color:var(--text-muted);background:var(--surface-soft)}@media (width<=960px){.app-shell{display:block}.app-shell.sidebar-collapsed{grid-template-columns:1fr}.brand-block{margin-bottom:0}.sidebar{z-index:42;border-right:1px solid var(--border-muted);border-bottom:0;width:min(84vw,312px);padding:20px 14px 16px;transition:transform .28s cubic-bezier(.22,1,.36,1);position:fixed;top:0;bottom:0;left:0;overflow-y:auto;transform:translate(-106%)}.mobile-menu-open .sidebar{transform:translate(0)}.mobile-menu-backdrop{z-index:41;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);opacity:0;background:oklab(0% none none/.38);border:0;width:100%;height:100%;padding:0;transition:opacity .22s;position:fixed;inset:0}.mobile-menu-open .mobile-menu-backdrop{opacity:1;display:block}.app-shell.sidebar-collapsed .sidebar a:after,.brand-subtitle{display:none}.app-shell.sidebar-collapsed .sidebar-theme{display:block}.sidebar nav{grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.sidebar-theme{border-top-style:dashed}.topbar-start{width:100%}.content{padding:14px}.topbar{margin-bottom:16px}.two-column-grid,.device-detail-grid{grid-template-columns:1fr}}@media (width>=961px){.mobile-menu-backdrop{display:none!important}}@media (width<=640px){.hamburger-btn span{display:none}.hamburger-btn{border-radius:12px;padding:8px}.sidebar nav,.stats-grid,.chart-grid,.detail-grid,.upload-summary{grid-template-columns:1fr}.chart-wrap{height:240px}}
