@font-face{font-family:Manrope Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(data:font/woff2;base64,d09GMgABAAAAAAn4ABMAAAAAEwQAAAmOAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGjQbgnQcLj9IVkFSgQEGYD9TVEFUgQIAgQovahEICok0h0ULIAAwhzoBNgIkAzwEIAWHJgeBDgwHG6QQUdRKTmoBFD8K42bniObKrG3LZFcMWZzFmrjTFhQ6TVTqPJcInrfrvzq3b2PGn1wwMiNYGTy9ViREYARlL1zAGcPdPqBt3gNWrfKthv4xnM+b9caw+wmjgEUVRjHXhS6jgCK6zf5HiWQacJpGdAgdrbV6g/Rf1BfxRqZVQnrxRVWSJb6RLFnyu0elilmjeoSQCKnxsmwLaddUMjnksriSYuuPl06EAl7KfAiWQjCUETz0zNZ3EII94CDQtzkMfZ/9IkkY8tZRZTDky5ZVwBAM+GYpdd4ZVAWYImnLkiTg48l79gGx3D+VBtLeyg8u7bJAd4uo0pFuQBFysE9C95l0W4Fkiao6GfrDbu77lVU7wk9cV3uqOsXmQiMkhVKl1ugjzUAJBSIkkVWHijkpkVSyUFsgVBuJMA0N+ZnXtyUv5yMigGdfQRmwL1AAjQ3YXG6iIFNSUdPQo8+AISPGAltBMDQRAtyf4ZspLlZkpyOVoMZPvFGWzvk8p5SUC/NWPMj6T2/Yas2EdlON5GkfdkeFwVGjta825H89NIenlLWAPAp5h1KDtRhCaAQWMsFKtEvOKpIhgLHlXPARokkgEGEOAkqxJRQpKYq4ezahIiLHP6hZpqMbV0pUF2vdvEimLEQ/iIUYLgYWs0VXGVlLTOPdaPmFfCC/XrtzqVo1ez7vz6+Kd2+7o11ZJ+4MreLbB5BKVGxobAq4jZYalZ5aX2CKJiwUuc9GNJyi4M8bGyKcdjSRrG4JohdF8buJfmQefbYYREnMFsOoiNliFDVxmRgL0XUmUMLqzW0A4gCQAhWGYCQpFNukwXhIkPMsbRI19ewtw8Cp2Wj/Ro5cM2OTAbJAvZ/L4opBXb9+UHscYuOKM/W8isgwN26Exexjizmfnlp9dE3hOSqdZ/F5QqbckIlPb+oKfXxd6hftJ7Sm/uyPYpONza84CRlMNk/uhOrLpyf53982++zRkXNu3g3VF8qFbx1+7fbHZ9DrB3VXWNSmhnT2vrwS1+1Z+kHGBaZIhnnvuLBTNDeA340D1DWu5/jEa9pVfl6+Jij+yo3EELNixXCLjr173Q5eDP7Y7/L4iQFHbjpaJLFoP4cCsYP6sAPL7gMHNg53yYjqxqTDrYqLDl5DzW/eTLjYxCvucprjI3yl2ykKowKUC2Ox2FJLFo6Fa1HBWLC2jMCIIBEmklkYhmkpmBhTm/LCvJAH5oGcMKcgFEP1xUdho8ANPa6RFD99/PN60fjj9eXy2Eex4B5MpmRapXidzFk1p4uLk3+hn6jAP9ovJcXPPwk8o/0ltizbdbnTprvx4PSxT0VZ3Xc772aN7RflgbXRYwc3hLNO+k878nxGwfuVM8m8Gs7WEoVGWLHwSpx4vNSHBCMNqJ4m15Kp/TfHHVkQd++eY7PGN4W5byTs+6Ft8Ozvb/D60btv37de8ER0mS3P/0sLW84qGjEVkwztPzz06eGUWwKLwPb0D/WFd3vltl2aP276KpM0JNz6AfnAnZ5ADlF2zVyZ2OkxHSMxWPMnSZLbbDR3F1UjPVqp4d68da13F1YZujdWw7271iecO2l9+/4p47Oztjck355/75wFOI+VdGDqbNGs+ISgxg3iB2jb2r+b0CWsNLHIM4sdv8SDSFBP/Oromz6FNCWw2iMTxV0R8QLyBTkpe0j5+pSSJOOTB5Mck/gh3IopuNQnhKj02t3FL80gGbEh89SZcwTxcYt5cZT/nMnB3uXfPy8BSpVMBuRx+ZhACGzDBmwHsJRAjhotOnzuj2wDz3ug2wOUAY2NgZln9/TK/enG/oE4rO1wxvGUFMAxsZ0qNjRC7hl9d17e7imbgDt6uJXhUobDg7v3RX/yRCKxgMhfyiKcZfbpk0wmCcdQlIAOHeakXLvCNt++WfKiozNqSZxxJotn+c0a7DdPsx7DPYgKIDxwwYUZDg9aJbxocTjcwovr9WAsVV32mQoiiIOCHc60Oltst9qCQYuCqN1yHo0Kj60OgI2OqmiuBUWrNA0NDhYCDcdpmMrs1fZZ0xdTzMr1HdPtIHstYhqaPDDA5YxUDx7J4fJiisBSDI/L6G/bn34GNy8Q2g044ZTulAdFLb0tI6NNxfj3DzLjWiNGxje1pz7aXOcNV68lDPEd2SXl6VfBuwmHzdf1gxFy1HvA7pD8I2BnnmyGw852Cg5XbgIdEEGE5UCzen5jTlG6JCU5iajlxVcsXvbcS0SAcg1dcesWJLVK8+hYHOYQ+Pjy+EyVGXP0aPTFagrV9E03hCQvYx+g47KGq+1GsLj8uBIyihNw33YUe8PNC4BOJ3Lm1AglLV3nCuvUdIP+v15tVGbWIwgxLVpPkfpthCGpTKG+oA/DQfsKKvxhScqaN6FuElAUtTKv2UYgOmQegsN/n7njHUju8wM4VTcm+Q8xfX9SFwjTzdVqu95UOWSIGOabH8OGBEba//8Yxl3GcPdP/dMBOoSX/0z5SZmBoLbaPs+9asaMpb36yknKaw6FqWZa6A5vDa02mhkOba1q6KtLV208xrkwmW5C4VD6n2fvRjADy2qDYYnNy+H10Fq0LMbNzS863gkO7iQ8eC48/Ny5m59tOcEso3u7Qg3yrqDL6eKXwJAuWnhylfbWrRObe66rzX59+XDtzusnL66dI/86ArmtLlzED860Ef3bFPV78OX/zFTA11fcBn2Vntb7qiGBSgLBHyuv/uEaqqoTgSpOyjlzh86me1Vriv7i9rLPLvtghWmSnblRbAsBJL/4dScSQTBxOivHMO5QvBBY0iheJvfwWLxLOGzYKZyM4zVc2Cll46zEpeUV4MqGEWZj22SdOxhGAjgs9AEnfT+RoiMfcDb0GS5NncKVxju4Nt/mRk13O9Gz3FLct5oCD6wkwUNrCfHIUg6SMf8LwQGyVaBUqpLPW5BaMpRshEpl8nS1qw5dgnzlik8QBXmdy5UrIH74heTKZKMSilQso4hsRiGraQZRzxpNGqlEJMsXuAU7GlcR8mWSykUpVkWGyIf0a8v4qEQp5CtGsMiZa+4ESYQy+WilCiguHzxMXO54ogShooTV2bj2z1zL6DYSoImoQ8lFUWxMLBNQQgLkV2tHYgUoIbkuREz+fJHKxxWBcnvu3KQppFCxLkguB1NyVSp/TknRvNwYlCdbblWu3ze6owHdWluhE5tgQ6ej2SV65CijijoaRfSiH4Nqz1OpfEW+WeI/oU0ly60zkV9YzOQSYtZVEGYmrysTZAJkY4qZtIBD9/LYTIK7Nww3vMiYBwA=) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Manrope Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/manrope-cyrillic-wght-normal-Dvxsihut.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Manrope Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/manrope-greek-wght-normal-DL7QRZyv.woff2) format("woff2-variations");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Manrope Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/manrope-vietnamese-wght-normal-usUDDRr7.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Manrope Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/manrope-latin-ext-wght-normal-Ch3YOpNY.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Manrope Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/manrope-latin-wght-normal-DHIcAJRg.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Noto Sans Thai Looped Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/noto-sans-thai-looped-thai-wght-normal-DqqRPgJ9.woff2) format("woff2-variations");unicode-range:U+02D7,U+0303,U+0331,U+0E01-0E5B,U+200C-200D,U+25CC}@font-face{font-family:Noto Sans Thai Looped Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/noto-sans-thai-looped-latin-ext-wght-normal-D1LGzfIf.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Noto Sans Thai Looped Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/noto-sans-thai-looped-latin-wght-normal-CVCojjXl.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}html,body,#root{height:100%;margin:0;padding:0}:root,body[data-theme=light]{color-scheme:light;--bg: #f5f6fa;--panel: #ffffff;--panel-solid: #ffffff;--line: #e5e7eb;--ink: #202224;--muted: #8a9099;--field-bg: #f8f9fc;--soft-bg: #f8f9fc;--hover-bg: rgba(72, 128, 255, .08);--secondary-btn-bg: #ffffff;--blue: #4880ff;--blue-hover: #3b71f3;--card-glow: rgba(72, 128, 255, .06);--shadow: 0 4px 16px rgba(0, 0, 0, .03), 0 1px 3px rgba(0, 0, 0, .02);--shadow-lg: 0 10px 25px rgba(0, 0, 0, .04), 0 8px 12px rgba(0, 0, 0, .03);--success: #00b69b;--success-bg: rgba(0, 182, 155, .1);--danger: #ff5b5b;--danger-bg: rgba(255, 91, 91, .1);--warning: #f19a3e;--warning-bg: rgba(241, 154, 62, .1);--chart-purple: #8b5cf6;--page-max-width: 1600px;--page-gutter: 32px;--section-gap: 24px;--card-radius: 12px;--card-head-padding: 18px 22px;--card-body-padding: 22px}body[data-theme=dark]{color-scheme:dark;--bg: #090d1a;--panel: #12192c;--panel-solid: #12192c;--line: #1f2c4f;--ink: #f4fbff;--muted: #94a3b8;--field-bg: #090d1a;--soft-bg: #1a233b;--hover-bg: rgba(72, 128, 255, .15);--secondary-btn-bg: #12192c;--blue: #4880ff;--blue-hover: #3b71f3;--card-glow: rgba(72, 128, 255, .15);--shadow: 0 4px 20px rgba(0, 0, 0, .15);--shadow-lg: 0 10px 30px rgba(0, 0, 0, .25);--success: #00b69b;--success-bg: rgba(0, 182, 155, .15);--danger: #ff5b5b;--danger-bg: rgba(255, 91, 91, .15);--warning: #f19a3e;--warning-bg: rgba(241, 154, 62, .15);--chart-purple: #a78bfa}*{box-sizing:border-box}body{min-height:100vh;color:var(--ink);font-family:Manrope Variable,Noto Sans Thai Looped Variable,Leelawadee UI,ui-sans-serif,system-ui,-apple-system,sans-serif;background-color:var(--bg);transition:background-color .25s ease,color .25s ease}.dashboard-shell{min-height:100vh;width:100%}.dashboard-shell:has(#loginCard:not(.hidden)){display:flex;align-items:center;justify-content:center;background-color:var(--bg);padding:20px}.dashboard-shell:has(#loginCard:not(.hidden)) .sidebar-container,.dashboard-shell:has(#loginCard:not(.hidden)) .main-container{display:none!important}.dashboard-shell:not(:has(#loginCard:not(.hidden))){display:block}.sidebar-container{width:72px;height:100vh;background-color:var(--panel);border-right:1px solid var(--line);display:flex;flex-direction:column;overflow:hidden;position:fixed;left:0;top:0;z-index:1000;transition:width .2s cubic-bezier(.4,0,.2,1),background-color .25s ease,border-color .25s ease}.dashboard-shell.sidebar-expanded .sidebar-container{width:240px;box-shadow:4px 0 24px #0000000d}.brand-section{display:flex;align-items:center;padding:16px 14px;height:75px;border-bottom:1px solid var(--line);overflow:hidden;flex-shrink:0}.brand-mark{width:44px;height:44px;border-radius:8px;background:linear-gradient(135deg,var(--blue),var(--blue-hover));color:#fff;display:grid;place-items:center;font-weight:800;font-size:1.25rem;flex-shrink:0;box-shadow:0 4px 10px #4880ff33}.brand-details{margin-left:14px;display:flex;flex-direction:column;opacity:0;pointer-events:none;transition:opacity .15s ease;white-space:nowrap}.dashboard-shell.sidebar-expanded .brand-details{opacity:1;pointer-events:auto}.brand-name{font-size:.95rem;font-weight:800;color:var(--ink)}.brand-badge{font-size:.65rem;font-weight:700;color:var(--blue);background:var(--hover-bg);padding:1px 6px;border-radius:4px;align-self:flex-start;margin-top:2px;letter-spacing:.04em}.sidebar-nav{display:flex;flex-direction:column;gap:8px;padding:20px 12px;flex:1}.nav-item{display:flex;align-items:center;height:46px;border-radius:8px;color:var(--muted);text-decoration:none;transition:all .2s ease;overflow:hidden;padding:0 12px}.sidebar-nav .nav-item[data-tab=dashboard]{order:1}.sidebar-nav .nav-item[data-tab=devices]{order:2}.sidebar-nav .nav-item[data-tab=firmware]{order:3;flex:0 0 46px}.sidebar-nav .nav-item[data-tab=piUpdate]{order:4;flex:0 0 46px}.sidebar-nav .nav-item[data-tab=auditLog]{order:5}.sidebar-nav .nav-item[data-tab=newDevices]{order:6}.sidebar-nav .nav-item[data-tab=trash]{order:7}.nav-item:hover,.nav-item.active{color:var(--blue);background-color:var(--secondary-btn-bg)}.nav-item.active{font-weight:700}.new-device-notice-dot{align-items:center;background:#ef4444;border-radius:999px;box-shadow:0 0 0 3px #ef444429;color:#fff;display:inline-flex;font-size:.72rem;font-weight:800;height:18px;justify-content:center;line-height:1;margin-left:6px;min-width:18px;vertical-align:middle}.nav-icon{width:20px;height:20px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.nav-label{margin-left:14px;font-size:.88rem;opacity:0;pointer-events:none;transition:opacity .15s ease;white-space:nowrap}.dashboard-shell.sidebar-expanded .nav-label{opacity:1;pointer-events:auto}.sidebar-footer{padding:16px 12px;border-top:1px solid var(--line);display:flex;justify-content:center;align-items:center;flex-shrink:0;transition:all .2s ease}.dashboard-shell.sidebar-expanded .sidebar-footer{justify-content:flex-end;padding-right:20px}.sidebar-toggle-btn{width:44px;height:44px;border-radius:8px;background-color:transparent;border:1px solid var(--line);color:var(--muted);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s ease}.sidebar-toggle-btn:hover{color:var(--blue);background-color:var(--secondary-btn-bg);border-color:var(--blue)}.toggle-icon{display:flex;align-items:center;justify-content:center;transition:transform .3s cubic-bezier(.4,0,.2,1)}.dashboard-shell.sidebar-expanded .toggle-icon{transform:rotate(180deg)}.main-container{margin-left:72px;height:100vh;display:flex;flex-direction:column;overflow:hidden;background-color:var(--bg);transition:margin-left .2s cubic-bezier(.4,0,.2,1),background-color .25s ease}.dashboard-shell.sidebar-expanded .main-container{margin-left:240px}.topbar-header{height:75px;padding:0 32px;border-bottom:1px solid var(--line);background-color:var(--panel);display:flex;align-items:center;justify-content:space-between;gap:20px;flex-shrink:0;transition:background-color .25s ease,border-color .25s ease}.page-title-area h2{margin:0;font-size:1.2rem;font-weight:700;color:var(--ink);letter-spacing:-.01em}.subtitle{margin:2px 0 0;font-size:.78rem;color:var(--muted)}.topbar-actions{display:flex;align-items:center;gap:12px}.language-switch{display:inline-flex;align-items:center;min-height:36px;padding:3px;border:1px solid var(--line);border-radius:8px;background:var(--soft-bg)}.language-option{min-width:40px;min-height:28px;padding:0 9px;border:0;border-radius:5px;background:transparent;color:var(--muted);font:inherit;font-size:.76rem;font-weight:700;cursor:pointer}.language-option:hover,.language-option:focus-visible{color:var(--ink);background:var(--secondary-btn-bg);outline:none}.language-option.is-active{color:var(--blue);background:var(--secondary-btn-bg);box-shadow:inset 0 0 0 1px var(--blue)}.theme-toggle{width:36px;height:36px;border-radius:50%;border:1px solid var(--line);background:var(--soft-bg);color:var(--ink);display:flex;align-items:center;justify-content:center;font-size:1rem;cursor:pointer;box-shadow:none!important;min-height:unset!important;transition:all .2s ease}.theme-toggle:hover{background:var(--secondary-btn-bg);border-color:var(--blue)}.auth-pill{height:36px;display:inline-flex;align-items:center;padding:0 14px;border-radius:8px;border:1px solid var(--line);background:var(--soft-bg);color:var(--muted);font-size:.8rem;font-weight:600}.btn-logout{height:36px;padding:0 14px;border-radius:8px;border:1px solid var(--line);background:var(--panel);color:var(--ink);font-size:.8rem;font-weight:600;cursor:pointer;transition:all .2s ease}.btn-logout:hover{border-color:var(--danger);color:var(--danger);background:var(--danger-bg)}.content-root{flex:1;overflow-y:auto;padding:32px}.tab-view-content{display:none}.content-root[data-active-tab=dashboard] #dashboardView,.content-root[data-active-tab=newDevices] #newDevicesView,.content-root[data-active-tab=trash] #trashView,.content-root[data-active-tab=firmware] #firmwareView,.content-root[data-active-tab=piUpdate] #piUpdateView,.content-root[data-active-tab=auditLog] #auditLogView,.content-root[data-active-tab=personnel] #personnelView,.content-root[data-active-tab=devices] #devicesView{display:block}.overview-strip{display:grid;grid-template-columns:repeat(3,1fr) 1.4fr;gap:20px;margin-bottom:24px}.overview-card{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:20px;box-shadow:var(--shadow);display:flex;align-items:center;gap:16px;transition:transform .2s ease,box-shadow .2s ease}.overview-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-lg)}.card-icon{width:48px;height:48px;border-radius:10px;display:flex;align-items:center;justify-content:center;background:#4880ff1a;color:var(--blue);flex-shrink:0}.overview-card.online .card-icon{background:var(--success-bg);color:var(--success)}.overview-card.offline .card-icon{background:var(--danger-bg);color:var(--danger)}.card-info{display:flex;flex-direction:column}.card-info span{font-size:.75rem;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.05em}.card-info strong{font-size:1.5rem;font-weight:800;color:var(--ink);margin-top:4px}.dashboard-grid{display:grid;grid-template-columns:1.5fr 1fr;gap:24px}.mock-chart-container{padding:10px 0;display:flex;flex-direction:column;justify-content:space-between}.svg-chart{width:100%;height:180px}.chart-labels{display:flex;justify-content:space-between;padding:10px 10px 0;color:var(--muted);font-size:.75rem;font-weight:600}.performance-item{display:flex;flex-direction:column;gap:8px}.perf-label{display:flex;justify-content:space-between;font-size:.82rem;font-weight:600}.perf-label span{color:var(--muted)}.perf-label strong{color:var(--ink)}.progress-bar{height:6px;background:var(--line);border-radius:3px;overflow:hidden}.progress-fill{height:100%;background:var(--blue);border-radius:3px}.progress-fill.warning{background:var(--warning)}.new-device-page{display:flex;flex-direction:column;gap:18px}.new-device-hero-card .card-body{padding-top:16px}.new-device-copy{color:var(--muted);line-height:1.55;margin:0;max-width:880px}.new-device-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(360px,1fr));gap:18px}.new-device-card{background:var(--panel);border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow);overflow:hidden}.new-device-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:18px 20px;border-bottom:1px solid var(--line)}.new-device-card-head h3{color:var(--ink);font-size:1.1rem;margin:4px 0 3px}.new-device-card-head p{color:var(--muted);font-size:.85rem;margin:0}.new-device-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;padding:18px 20px}.new-device-actions{display:flex;justify-content:flex-end;gap:10px;padding:16px 20px 20px}.trash-device-actions{align-items:center;justify-content:space-between;flex-wrap:wrap}.new-device-empty{background:var(--panel);border:1px dashed var(--line);border-radius:14px;color:var(--muted);display:flex;flex-direction:column;gap:6px;padding:28px}.new-device-empty strong{color:var(--ink);font-size:1rem}.devices-tab-layout{display:grid;grid-template-columns:auto minmax(0,1fr);gap:24px;align-items:start;transition:gap .32s cubic-bezier(.4,0,.2,1)}.devices-list-sidebar{width:235px;height:calc(100vh - 120px);display:flex;flex-direction:column;min-width:0;transition:width .28s cubic-bezier(.4,0,.2,1),border-color .25s ease,box-shadow .28s cubic-bezier(.4,0,.2,1)}.devices-list-sidebar.is-expanded{width:480px}.devices-list-sidebar.is-collapsed{width:235px}.devices-list-sidebar .card-head{gap:8px;padding:14px 12px}.devices-list-sidebar .card-title{white-space:nowrap!important;min-width:0;overflow:hidden;text-overflow:ellipsis}.devices-list-sidebar .card-body.no-padding{padding:0;overflow:hidden;flex:1;min-height:0}.devices-list-actions,.devices-sort-controls{display:inline-flex;align-items:center;gap:6px;flex:0 0 auto}.btn-sort-action{width:28px;height:28px;border-radius:8px;border:1px solid var(--line);background:var(--panel);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s ease;color:var(--muted)}.btn-sort-action svg{display:block}.btn-sort-action.confirm{color:#2ecc71;border-color:#2ecc714d;background-color:#2ecc710d}.btn-sort-action.confirm:hover{background-color:#2ecc71;color:#fff;border-color:#2ecc71}.btn-sort-action.cancel{color:#e74c3c;border-color:#e74c3c4d;background-color:#e74c3c0d}.btn-sort-action.cancel:hover{background-color:#e74c3c;color:#fff;border-color:#e74c3c}.devices-list-sidebar.reorder-mode .device-row{cursor:grab!important;-webkit-user-select:none;user-select:none;touch-action:none}.devices-list-sidebar.reorder-mode .device-row:active{cursor:grabbing!important}.device-row.is-dragging{opacity:.48!important;border:1px dashed rgba(72,128,255,.72)!important;background:#4880ff14!important;transform:scale(.985);box-shadow:0 12px 28px #11182724}.device-row.drag-over{margin-top:52px!important;border-top:3px solid rgba(72,128,255,.88)!important;box-shadow:0 -30px 34px -30px #4880ffe6,0 -1px #4880ff52;background:linear-gradient(180deg,rgba(72,128,255,.12),rgba(72,128,255,.04) 42%,var(--panel))}.devices-list-sidebar.is-expanded #devicesListToggleBtn svg{transform:rotate(180deg)}#devicesListToggleBtn svg{transition:transform .28s cubic-bezier(.4,0,.2,1)}.device-list-wrap{height:100%;overflow-y:auto;overflow-x:hidden}.device-list{display:flex;flex-direction:column;gap:8px;padding:10px 8px;transition:gap .28s cubic-bezier(.4,0,.2,1),padding .28s cubic-bezier(.4,0,.2,1)}.device-row{appearance:none;border:1px solid var(--line);background:var(--panel);border-radius:10px;color:inherit;cursor:pointer;display:grid;grid-template-columns:minmax(0,1fr);gap:8px;padding:11px 10px;text-align:left;min-width:0;outline:none;transition:margin .32s cubic-bezier(.22,1,.36,1),transform .32s cubic-bezier(.22,1,.36,1),background-color .18s ease,border-color .18s ease,box-shadow .18s ease,padding .28s cubic-bezier(.4,0,.2,1),gap .28s cubic-bezier(.4,0,.2,1)}.device-row:hover,.device-row:focus-visible{background:var(--secondary-btn-bg);border-color:var(--blue)}.device-row.is-selected{background:var(--secondary-btn-bg);border-color:#4880ff6b;box-shadow:0 0 0 1px #4880ff2e}.devices-list-sidebar.is-expanded .device-list{gap:8px;padding:10px}.devices-list-sidebar.is-expanded .device-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.45fr) auto;grid-template-areas:"primary meta delete" "seen ota ota";align-items:center;gap:6px 8px;padding:10px 12px}.devices-list-sidebar.is-collapsed .device-list{padding:8px 10px;gap:6px}.devices-list-sidebar.is-collapsed .device-row{display:flex!important;justify-content:flex-start!important;align-items:center!important;padding:10px 12px!important;text-align:left!important}.devices-list-sidebar.is-collapsed .device-primary-cell{grid-area:auto!important;text-align:left!important;width:100%!important;padding:0!important;margin:0!important}.devices-list-sidebar.is-collapsed .device-sub,.devices-list-sidebar.is-collapsed .device-meta-cell,.devices-list-sidebar.is-collapsed .device-ota-cell,.devices-list-sidebar.is-collapsed .device-seen-cell,.devices-list-sidebar.is-collapsed .device-delete-cell{display:none!important}.devices-list-sidebar:not(.is-expanded) .device-sub,.devices-list-sidebar:not(.is-expanded) .device-meta-cell,.devices-list-sidebar:not(.is-expanded) .device-ota-cell,.devices-list-sidebar:not(.is-expanded) .device-seen-cell,.devices-list-sidebar:not(.is-expanded) .device-delete-cell{display:none!important}.device-primary-cell,.device-meta-cell,.device-ota-cell,.device-seen-cell,.device-delete-cell{min-width:0;max-width:100%}.device-primary-cell{grid-area:primary;align-self:start;padding-top:2px}.device-meta-cell{grid-area:meta;align-self:start}.device-ota-cell{grid-area:ota}.device-seen-cell{grid-area:seen}.device-delete-cell{grid-area:delete}.device-meta-cell,.device-ota-cell,.device-seen-cell{display:flex;align-items:center;gap:8px;flex-wrap:wrap;white-space:normal}.device-seen-cell{white-space:normal}.device-last-seen{display:flex;flex-direction:column;align-items:flex-start;gap:2px;line-height:1.2}.device-last-seen strong{color:var(--ink);font-size:.74rem;font-weight:700;white-space:normal}.device-ota-cell,.device-seen-cell{justify-content:flex-start}.device-ota-cell.is-dual{display:grid;gap:4px;align-content:center;white-space:normal}.device-ota-row{display:flex;align-items:center;gap:6px;min-width:0;flex-wrap:nowrap}.device-ota-row .job-status{flex:0 0 auto;white-space:nowrap}.device-ota-label{min-width:52px;color:var(--muted);font-size:.68rem;font-weight:700}.device-name{font-size:.88rem!important;font-weight:700;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;transition:color .18s ease}.devices-list-sidebar.is-expanded .device-name{font-size:.88rem!important;line-height:inherit}.device-sub{color:var(--muted);font-size:.72rem!important;margin-top:1px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;transition:color .18s ease}.devices-list-sidebar.is-expanded .device-sub{font-size:.72rem!important}.device-reorder-wrapper{display:flex;align-items:center;gap:8px;width:100%}.device-name-wrap{min-width:0;flex:1}.run-status-active{color:#2ecc71!important;font-weight:700}.run-status-inactive{color:#e74c3c!important;font-weight:700}.devices-list-sidebar.is-expanded .badge,.devices-list-sidebar.is-expanded .job-status{font-size:.7rem;padding:4px 8px}.device-delete-cell{justify-self:end;align-self:start}.device-delete-cell .btn{max-width:100%;white-space:nowrap}@keyframes deviceDetailReveal{0%{opacity:0;transform:translate(-6px)}to{opacity:1;transform:translate(0)}}.empty-device-list{padding:18px}.empty-state-card{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 40px;text-align:center;background:var(--panel);border:1px solid var(--line);border-radius:12px;min-height:380px}.empty-state-icon{width:80px;height:80px;border-radius:50%;background:var(--soft-bg);color:var(--muted);display:flex;align-items:center;justify-content:center;margin-bottom:20px}.empty-state-card h3{font-size:1.15rem;font-weight:700;color:var(--ink);margin:0 0 10px}.empty-state-card p{font-size:.85rem;color:var(--muted);max-width:420px;margin:0;line-height:1.5}.devices-detail-workspace:has(#selectedStatusCard.hidden) #devicesEmptyState{display:flex!important}.devices-detail-workspace:has(#selectedStatusCard.hidden) .devices-detail-container{display:none!important}.devices-detail-workspace:not(:has(#selectedStatusCard.hidden)) #devicesEmptyState{display:none!important}.devices-detail-workspace:not(:has(#selectedStatusCard.hidden)) .devices-detail-container{display:block!important}.card,.auth-card{background:var(--panel);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow);overflow:hidden;transition:background-color .25s ease,border-color .25s ease}.card-head{padding:16px 24px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between}.card-body{padding:24px}.stack{display:flex;flex-direction:column;gap:16px}.device-hero-panel{position:relative;display:flex;justify-content:space-between;align-items:center;gap:24px;padding:20px 24px;border-bottom:1px solid var(--line);background:linear-gradient(135deg,var(--panel) 0%,var(--soft-bg) 100%);border-radius:12px 12px 0 0}.device-edit-button{position:absolute;top:12px;right:12px;width:36px;height:36px;display:inline-flex;align-items:center;justify-content:center;padding:0;border:1px solid var(--line);border-radius:8px;background:var(--panel);color:var(--blue);cursor:pointer;transition:background-color .18s ease,border-color .18s ease,color .18s ease}.device-edit-button:hover,.device-edit-button:focus-visible,.device-edit-button.is-active{background:var(--secondary-btn-bg);border-color:var(--blue);color:var(--blue-hover);outline:none}.device-edit-button:focus-visible{box-shadow:0 0 0 3px #4880ff26}.status-hero{padding-right:40px}.device-metadata-editor{padding:16px;border:1px solid var(--line);border-radius:12px;background:var(--soft-bg)}.device-metadata-editor-head h4{margin:0;color:var(--ink);font-size:1rem}.device-metadata-editor-head p{max-width:70ch;margin:6px 0 0;color:var(--muted);font-size:.82rem;line-height:1.5}.device-metadata-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:16px}.device-metadata-fields .field{display:flex;flex-direction:column;gap:6px;color:var(--ink);font-size:.8rem;font-weight:700}.device-metadata-actions{display:flex;align-items:center;justify-content:flex-end;gap:10px;margin-top:16px}.device-metadata-actions .status-text{flex:1;color:var(--muted);font-size:.82rem}.device-metadata-actions .status-text.error{color:var(--danger)}.audit-log-page{min-width:0}.audit-log-head{align-items:center;gap:16px}.audit-log-tools{display:flex;align-items:center;justify-content:flex-end;gap:10px;min-width:min(100%,620px)}.audit-log-tools input{min-width:280px}.audit-log-table-wrap{max-height:calc(100vh - 245px);min-height:420px;overflow:auto}.audit-log-table{min-width:940px}.audit-log-table thead th{position:sticky;top:0;z-index:1;background:var(--panel)}.audit-actor-name{display:block;color:var(--ink);font-weight:700}.audit-actor-meta,.audit-target-meta{display:block;margin-top:3px;color:var(--muted);font-size:.72rem}.audit-result{display:inline-flex;align-items:center;min-height:26px;padding:0 9px;border-radius:999px;color:var(--danger);background:var(--danger-bg);font-size:.74rem;font-weight:700}.audit-result.is-success{color:var(--success);background:var(--success-bg)}.audit-detail-dialog{width:min(720px,calc(100vw - 32px))}.audit-detail-content{max-height:min(60vh,560px);margin:16px 0 0;padding:14px;overflow:auto;border-radius:8px;background:var(--soft-bg);color:var(--ink);font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:.78rem;line-height:1.55;white-space:pre-wrap;overflow-wrap:anywhere}@media(max-width:900px){.device-hero-panel{flex-direction:column;align-items:flex-start;gap:16px}}.device-identity{display:flex;flex-direction:column;gap:4px;padding:0;border:none;background:transparent;box-shadow:none}.device-identity .eyebrow{font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--blue)}.device-identity .card-title{margin:2px 0 0;font-size:1.45rem;font-weight:850;color:var(--ink);letter-spacing:-.02em}.device-identity .device-sub{margin:4px 0 0;font-size:.8rem;font-family:monospace;color:var(--muted);background-color:var(--hover-bg);padding:2px 8px;border-radius:4px;align-self:flex-start;border:1px solid var(--line)}.status-hero{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.status-pill-item{display:inline-flex;align-items:center;gap:8px;padding:0 14px;border-radius:99px;font-size:.82rem;border:1px solid var(--line);background-color:var(--panel);transition:all .2s ease;box-shadow:var(--shadow);height:32px;line-height:1}.status-pill-item strong{display:inline-block!important;margin-top:0!important;font-size:.82rem!important;font-weight:700!important;color:inherit!important;line-height:1!important}.status-pill-label{color:var(--muted);font-weight:550;line-height:1}.status-pill-item.online{background-color:#2ecc7114;border-color:#2ecc7133;color:#27ae60}.status-pill-item.offline{background-color:var(--hover-bg);border-color:var(--line);color:var(--muted)}.status-pill-item.running{background-color:#4880ff14;border-color:#4880ff33;color:var(--blue)}.status-pill-item.standby{background-color:#f39c1214;border-color:#f39c1233;color:#d35400}.status-pill-item.seen-at{background-color:var(--panel);color:var(--ink)}.status-pill-item.seen-at strong{font-weight:600!important;color:var(--muted)!important}.status-dot-pulse{width:8px;height:8px;border-radius:50%;background-color:var(--muted);display:inline-block}.status-dot-pulse.online{background-color:#2ecc71;box-shadow:0 0 #2ecc7166;animation:pulse-dot 1.8s infinite}.status-dot-pulse.offline{background-color:var(--muted);box-shadow:none;animation:none}@keyframes pulse-dot{0%{transform:scale(.95);box-shadow:0 0 #2ecc71b3}70%{transform:scale(1);box-shadow:0 0 0 6px #2ecc7100}to{transform:scale(.95);box-shadow:0 0 #2ecc7100}}.status-hero strong,.status-value{display:block;margin-top:6px;font-size:1.1rem;font-weight:700;color:var(--ink);overflow-wrap:anywhere}.remote-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.admin-access-panel,.transport-panel{padding:16px;border:1px solid var(--line);border-radius:10px;background:var(--soft-bg);display:flex;flex-direction:column;gap:12px;justify-content:space-between}.device-name{font-size:.9rem;font-weight:700;color:var(--ink);margin:0}.admin-access-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px}.transport-actions{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.badge,.job-status{display:inline-flex;align-items:center;justify-content:center;min-height:22px;padding:2px 8px;border-radius:4px;font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.02em}.badge.on,.job-status.done{background:var(--success-bg);color:var(--success)}.badge.off,.job-status.failed{background:var(--danger-bg);color:var(--danger)}.job-status.pending{background:var(--warning-bg);color:var(--warning)}.job-status.running{background:var(--hover-bg);color:var(--blue);border:1px solid rgba(72,128,255,.2)}input,select,textarea{width:100%;min-height:40px;padding:8px 12px;border:1px solid var(--line);border-radius:8px;outline:none;background:var(--field-bg);color:var(--ink);font-size:.9rem;transition:border-color .2s ease,box-shadow .2s ease}input:focus,select:focus,textarea:focus{border-color:var(--blue);box-shadow:0 0 0 3px #4880ff26}textarea{min-height:100px;resize:vertical}.btn{display:inline-flex;align-items:center;justify-content:center;min-height:40px;padding:0 16px;border-radius:8px;border:1px solid var(--line);background:var(--secondary-btn-bg);color:var(--ink);font-size:.88rem;font-weight:700;cursor:pointer;transition:all .2s ease}.btn:hover{background:var(--soft-bg);border-color:var(--blue);color:var(--blue)}.btn:disabled{opacity:.6;cursor:not-allowed}.btn.secondary{background:var(--secondary-btn-bg);border-color:var(--line);color:var(--ink)}.btn.secondary:hover{background:var(--soft-bg);border-color:var(--blue)}.btn.danger{background:var(--secondary-btn-bg);border-color:color-mix(in srgb,var(--danger) 42%,var(--line));color:var(--danger)}.btn.danger:hover{background:var(--danger-bg);border-color:var(--danger);color:var(--danger)}.btn.red{background:transparent;border-color:var(--line);color:var(--danger)}.btn.red:hover{background:var(--danger-bg);border-color:var(--danger)}.btn.small{min-height:30px;padding:0 10px;font-size:.78rem;border-radius:6px}.transport-mode-btn{min-height:34px;font-size:.8rem}.transport-mode-btn.is-active{background:var(--secondary-btn-bg);color:var(--blue);border-color:var(--blue)}.status-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.detail-actions{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.system-panel-layout{display:grid;grid-template-columns:repeat(2,1fr);gap:20px;width:100%}@media(max-width:768px){.audit-log-head,.audit-log-tools{align-items:stretch;flex-direction:column}.audit-log-tools,.audit-log-tools input{width:100%;min-width:0}.device-metadata-fields{grid-template-columns:1fr}.device-metadata-actions{flex-wrap:wrap}.device-metadata-actions .status-text{flex-basis:100%}.system-panel-layout{grid-template-columns:1fr}}.system-sub-card{background-color:var(--panel);border:1px solid var(--line);border-radius:10px;padding:16px 20px;display:flex;flex-direction:column;gap:12px;box-shadow:var(--shadow);transition:border-color .25s ease}.system-sub-card:hover{border-color:var(--blue-hover)}.panel-sub-header{display:flex;align-items:center;gap:8px;border-bottom:1px solid var(--line);padding-bottom:8px}.panel-sub-header .sub-icon{font-size:1.1rem}.panel-sub-header h5{margin:0;font-size:.9rem;font-weight:750;color:var(--ink)}.panel-sub-body{display:flex;flex-direction:column;gap:12px;flex:1;justify-content:space-between}.panel-sub-body .status-desc{font-size:.82rem;color:var(--muted);margin:0;line-height:1.4;font-family:var(--font-mono, monospace);background-color:var(--hover-bg);padding:8px 12px;border-radius:6px;border:1px solid var(--line)}.transport-actions-container{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.admin-actions-container{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}@media(max-width:480px){.transport-actions-container,.admin-actions-container{grid-template-columns:1fr}}.print-options{display:flex;flex-direction:column;gap:14px;padding:18px;border:1px solid var(--line);border-radius:10px;background:var(--soft-bg)}.print-options-title{font-size:.92rem;font-weight:700;color:var(--ink)}.print-options-radios{display:flex;gap:16px;flex-wrap:wrap}.print-options label{display:inline-flex;align-items:center;gap:8px;margin-bottom:0;cursor:pointer;font-size:.85rem;font-weight:600}.print-options input[type=radio],.print-options input[type=checkbox],.log-select-checkbox{width:16px;height:16px;accent-color:var(--blue);margin:0}.print-graph-option{width:fit-content}.print-graph-option.is-disabled{opacity:.48;cursor:not-allowed}.print-option-actions{display:flex;gap:10px}.print-option-actions .btn{flex:1}.detail-panel{padding:20px;border:1px solid var(--line);border-radius:10px;background:var(--soft-bg);display:flex;flex-direction:column;gap:16px}.sensor-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:16px;width:100%}.sensor-card-v2{background-color:var(--panel);border:1px solid var(--line);border-radius:12px;padding:16px;display:flex;flex-direction:column;gap:12px;box-shadow:var(--shadow);transition:transform .2s ease,border-color .25s ease,box-shadow .2s ease;position:relative;overflow:hidden}.sensor-card-v2:hover{transform:translateY(-2px);box-shadow:0 4px 16px #0000000d}.sensor-card-header{display:flex;align-items:center;gap:10px}.sensor-card-icon{font-size:1.15rem;display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:8px;background-color:var(--hover-bg);border:1px solid var(--line)}.sensor-card-label{font-size:.8rem;font-weight:700;color:var(--muted);letter-spacing:-.01em}.sensor-card-body{display:flex;flex-direction:column;gap:8px}.sensor-card-value{font-size:1.35rem;font-weight:850;color:var(--ink);font-family:var(--font-mono, monospace);letter-spacing:-.02em}.sensor-status-pill{font-size:.72rem;font-weight:750;padding:3px 8px;border-radius:6px;display:inline-block;align-self:flex-start}.sensor-status-pill.active{background-color:#2ecc711a;color:#27ae60}.sensor-status-pill.inactive{background-color:#e74c3c1a;color:#c0392b}.sensor-progress-bg{height:4px;background-color:var(--hover-bg);border-radius:2px;width:100%;overflow:hidden}.sensor-progress-bar{height:100%;border-radius:2px;background-color:var(--blue);transition:width .3s ease}.sensor-card-v2.color-blue{border-color:#4880ff59}.sensor-card-v2.color-blue .sensor-card-icon{background-color:#4880ff14;color:var(--blue)}.sensor-card-v2.color-cyan{border-color:#00d2fc59}.sensor-card-v2.color-cyan .sensor-card-icon{background-color:#00d2fc14;color:#00d2fc}.sensor-card-v2.color-cyan .sensor-progress-bar{background-color:#00d2fc}.sensor-card-v2.color-teal{border-color:#00b89459}.sensor-card-v2.color-teal .sensor-card-icon{background-color:#00b89414;color:#00b894}.sensor-card-v2.color-teal .sensor-progress-bar{background-color:#00b894}.sensor-card-v2.color-orange{border-color:#e1705559}.sensor-card-v2.color-orange .sensor-card-icon{background-color:#e1705514;color:#e17055}.sensor-card-v2.color-red{border-color:#d6303159}.sensor-card-v2.color-red .sensor-card-icon{background-color:#d6303114;color:#d63031}.sensor-card-v2.color-green{border-color:#2ecc7159}.sensor-card-v2.color-green .sensor-card-icon{background-color:#2ecc7114;color:#2ecc71}.sensor-card-v2.color-purple{border-color:#9b59b659}.sensor-card-v2.color-purple .sensor-card-icon{background-color:#9b59b614;color:#9b59b6}.sensor-card-v2.color-purple .sensor-progress-bar{background-color:#9b59b6}.sensor-card-v2.color-pink{border-color:#e8439359}.sensor-card-v2.color-pink .sensor-card-icon{background-color:#e8439314;color:#e84393}.log-table-wrap{max-height:380px;overflow-y:auto;border:1px solid var(--line);border-radius:8px}.table{width:100%;border-collapse:collapse}.table th{position:sticky;top:0;z-index:5;background:var(--panel);border-bottom:1px solid var(--line);color:var(--muted);font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;padding:10px 12px;text-align:left}.table td{padding:10px 12px;border-bottom:1px solid var(--line);font-size:.82rem;vertical-align:top}.log-select-col,.log-select-cell{width:48px;text-align:center;vertical-align:middle!important}.log-select-col{display:none}.is-selecting-logs .log-select-col{display:table-cell}.log-sensor-cell{color:var(--muted);font-size:.78rem;line-height:1.5}.log-graph-action{width:96px;text-align:center;vertical-align:middle!important}.log-graph-button{white-space:nowrap}.log-graph-row td{padding:14px;background:var(--soft-bg)}.log-session-graph{display:flex;flex-direction:column;gap:14px}.log-session-graph-head,.log-chart-head,.log-chart-range{display:flex;justify-content:space-between;align-items:center;gap:12px}.log-session-graph-head>div{display:flex;flex-direction:column;gap:3px}.log-session-graph-head span,.log-chart-range,.log-sample-count{color:var(--muted);font-size:.72rem}.log-sample-count{white-space:nowrap}.log-chart-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.log-chart-card{min-width:0;padding:12px;border:1px solid var(--line);border-radius:8px;background:var(--panel)}.log-chart-head strong{font-size:.78rem}.log-chart-head span{color:var(--ink);font-size:.76rem;font-weight:750}.log-chart-svg{display:block;width:100%;height:92px;margin:8px 0 4px}.log-chart-axis{stroke:var(--line);stroke-width:1}.log-graph-state{padding:22px;text-align:center;color:var(--muted)}.log-graph-state.error{color:var(--red)}@media(max-width:760px){.log-chart-grid{grid-template-columns:1fr}}.firmware-console{display:grid;grid-template-columns:minmax(380px,.9fr) minmax(0,1.9fr);gap:24px;align-items:stretch}.upload-zone{border:2px dashed var(--line);border-radius:8px;padding:20px;background:var(--soft-bg);text-align:center;transition:border-color .2s ease}.upload-zone:hover{border-color:var(--blue)}#piUpdateView,.pi-update-page{width:100%}.pi-update-page{max-width:none}#piUpdateView .firmware-console{width:100%;grid-template-columns:minmax(380px,.9fr) minmax(0,1.9fr);align-items:stretch}#piUpdateView .card,#piUpdateMount,#piUpdateReportPanel{min-width:0;width:100%}#piUpdateReportPanel .card-body,.pi-update-history-card .card-body{overflow-x:auto}.firmware-history-card,.pi-update-history-card{display:flex;flex-direction:column;min-height:0}.pi-update-history-card{align-self:start}.firmware-history-card .card-body,.pi-update-history-card .card-body{flex:1;min-height:0;overflow:hidden}.pi-update-history-scroll{height:100%;overflow:auto;position:relative;scrollbar-gutter:stable}.pi-update-history-scroll .table th{z-index:2}.firmware-history-card .table,.pi-update-history-card .table{min-width:760px}#piUpdateMount,#piUpdateMount .pi-update-card{height:auto}.pi-release-notes-button{max-width:112px;overflow:hidden;border:1px solid var(--line);border-radius:6px;background:var(--soft-bg);color:var(--blue);cursor:pointer;font:inherit;font-size:.78rem;font-weight:700;padding:6px 8px;text-overflow:ellipsis;white-space:nowrap}.pi-release-notes-button:hover,.pi-release-notes-button:focus-visible{border-color:var(--blue);background:var(--secondary-btn-bg);outline:none}.notes-dialog{width:min(560px,calc(100vw - 32px));border:1px solid var(--line);border-radius:12px;background:var(--panel);color:var(--ink);box-shadow:var(--shadow-lg);padding:20px}.notes-dialog::backdrop{background:#03071294}.notes-dialog-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.notes-dialog-close{width:34px;height:34px;border:1px solid var(--line);border-radius:6px;background:var(--soft-bg);color:var(--ink);cursor:pointer;font-size:1.25rem;line-height:1}.notes-dialog-content{max-height:min(50vh,360px);margin:18px 0 0;overflow:auto;color:var(--ink);line-height:1.65;white-space:pre-wrap}#piUpdateMount .pi-update-card{min-height:0}.pi-update-card .card-head{align-items:flex-start}.pi-update-zone{text-align:left}.pi-update-options{display:grid;grid-template-columns:repeat(2,minmax(240px,1fr));gap:12px}#piUpdateView .pi-update-options{grid-template-columns:1fr}.check-row{display:flex;align-items:center;gap:10px;min-height:44px;padding:12px 14px;border:1px solid var(--line);border-radius:12px;background:var(--soft-bg);color:var(--text);font-weight:700}.check-row input{width:18px;height:18px;accent-color:var(--blue)}.pi-update-rules{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.pi-update-rules div{display:flex;gap:12px;align-items:flex-start;padding:14px;border:1px solid var(--line);border-radius:12px;background:var(--soft-bg)}.pi-update-rules strong{display:grid;place-items:center;width:28px;height:28px;flex:0 0 28px;border-radius:999px;background:var(--blue);color:#fff;font-size:.82rem}.pi-update-rules span{color:var(--muted);line-height:1.45}input[type=file]{display:block;margin-top:10px;cursor:pointer}input[type=file]::-webkit-file-upload-button,input[type=file]::file-selector-button{background:var(--secondary-btn-bg);color:var(--ink);border:1px solid var(--line);border-radius:6px;padding:6px 12px;font-size:.8rem;font-weight:700;cursor:pointer;transition:background .2s ease}input[type=file]::-webkit-file-upload-button:hover,input[type=file]::file-selector-button:hover{background:var(--soft-bg);border-color:var(--blue);color:var(--blue)}.login-screen{width:420px;padding:32px}.login-header{display:flex;align-items:center;gap:16px;border-bottom:1px solid var(--line);padding-bottom:20px;margin-bottom:20px}.login-title-block{display:flex;flex-direction:column;gap:2px}.login-screen .card-title{font-size:1.25rem;font-weight:800}.login-screen .card-body{padding:0}.login-options,.remember-login{display:flex;align-items:center}.login-options{justify-content:space-between;gap:16px;margin:-2px 0 16px;flex-wrap:nowrap}.remember-login{gap:8px;color:var(--muted);font-size:.9rem;flex:0 0 auto;white-space:nowrap}.remember-login input[type=checkbox]{appearance:auto;width:14px;height:14px;min-width:14px;margin:0;padding:0;flex:0 0 14px;accent-color:var(--blue)}.remember-login span{display:inline-block;line-height:1.2}.link-button{appearance:none;border:0;padding:4px;color:var(--blue);background:transparent;font:inherit;font-weight:700;cursor:pointer}.link-button:hover,.link-button:focus-visible{text-decoration:underline}.forgot-password-panel{margin-top:16px;padding-top:16px;border-top:1px solid var(--line)}.forgot-password-panel .btn{width:100%;margin-top:10px}.account-settings-layout{width:min(100%,1440px);margin:0 auto;display:grid;grid-template-columns:minmax(300px,360px) minmax(0,1fr);gap:24px;align-items:start}.account-self-column,.account-team-column{min-width:0;display:grid;gap:20px}.account-panel{min-width:0;overflow:hidden;border:1px solid var(--line);border-radius:var(--card-radius);background:var(--panel)}.account-profile-panel{padding:24px}.account-profile-main{display:flex;align-items:center;gap:16px}.account-avatar,.personnel-avatar{display:grid;place-items:center;flex:0 0 auto;color:var(--blue);background:var(--hover-bg);font-weight:800;letter-spacing:-.02em}.account-avatar{width:58px;height:58px;border-radius:14px;font-size:1.15rem}.account-profile-copy{min-width:0}.account-section-label{display:block;margin-bottom:3px;color:var(--muted);font-size:.76rem;font-weight:700}.account-profile-copy h3{margin:0;overflow:hidden;color:var(--ink);font-size:1.1rem;line-height:1.3;text-overflow:ellipsis;white-space:nowrap}.account-profile-copy p{margin:3px 0 0;overflow:hidden;color:var(--muted);font-size:.82rem;text-overflow:ellipsis;white-space:nowrap}.account-profile-meta{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:20px;padding-top:16px;border-top:1px solid var(--line)}.account-role-badge,.personnel-count,.account-session-state{display:inline-flex;align-items:center;min-height:28px;border-radius:999px;font-size:.74rem;font-weight:700;white-space:nowrap}.account-role-badge{padding:0 10px;color:var(--blue);background:var(--hover-bg)}.account-session-state{gap:7px;color:var(--muted)}.account-session-state>span:first-child{width:8px;height:8px;border-radius:50%;background:var(--success);box-shadow:0 0 0 3px var(--success-bg)}.account-section-head,.account-section-head-row,.permission-heading,.personnel-editor-actions{display:flex;align-items:center;justify-content:space-between;gap:16px}.account-section-head,.account-section-head-row{padding:20px 24px;border-bottom:1px solid var(--line)}.account-section-head{justify-content:flex-start;align-items:flex-start}.account-section-head h3,.account-section-head-row h3{margin:0;color:var(--ink);font-size:1rem;line-height:1.35}.account-section-head p,.account-section-head-row p{margin:4px 0 0;color:var(--muted);font-size:.8rem;line-height:1.5}.account-section-icon{width:38px;height:38px;display:grid;place-items:center;flex:0 0 38px;border-radius:10px;color:var(--blue);background:var(--hover-bg)}.account-section-icon svg{width:21px;height:21px}.own-password-form{display:grid;gap:14px;padding:22px 24px 24px}.own-password-form .row{margin:0}.own-password-form .row>span,.personnel-field-grid .row>span{color:var(--ink);font-size:.78rem;font-weight:700}.account-password-note{margin:-2px 0 0;color:var(--muted);font-size:.75rem;line-height:1.5}.account-password-submit{width:100%;margin-top:2px;color:#fff;border-color:var(--blue);background:var(--blue)}.account-password-submit:hover{color:#fff;border-color:var(--blue-hover);background:var(--blue-hover)}.own-password-form .status{min-height:18px}.account-heading-row{display:flex;align-items:center;gap:10px}.personnel-count{min-height:24px;padding:0 8px;color:var(--muted);background:var(--soft-bg)}.account-add-button{min-height:38px;flex:0 0 auto;color:#fff;border-color:var(--blue);background:var(--blue)}.account-add-button:hover{color:#fff;border-color:var(--blue-hover);background:var(--blue-hover)}.account-add-button svg{width:17px;height:17px;margin-right:7px}.personnel-table-wrap{width:100%;max-width:100%;overflow-x:auto;overscroll-behavior-inline:contain}.personnel-table{min-width:720px}.personnel-table th{position:static;padding:12px 16px;background:var(--soft-bg);font-size:.68rem}.personnel-table td{padding:14px 16px;vertical-align:middle}.personnel-table tbody tr{transition:background-color .16s ease-out}.personnel-table tbody tr:hover{background:var(--soft-bg)}.personnel-table tbody tr:last-child td{border-bottom:0}.personnel-table th:last-child,.personnel-table td:last-child{text-align:right}.table-actions{display:inline-flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:nowrap}.table-actions .btn{min-height:32px;padding:0 10px;font-size:.75rem}.personnel-person{display:flex;align-items:center;gap:11px;min-width:190px}.personnel-avatar{width:36px;height:36px;border-radius:9px;font-size:.72rem}.personnel-identity-copy{min-width:0;display:grid;gap:2px}.personnel-identity-copy strong,.personnel-identity-copy small{max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.personnel-identity-copy strong{color:var(--ink);font-size:.82rem}.personnel-identity-copy small{color:var(--muted);font-size:.72rem}.personnel-reset-badge{width:max-content;display:inline-flex;margin-top:3px;padding:3px 7px;border-radius:999px;color:var(--warning);background:var(--warning-bg);font-size:.68rem;font-style:normal;font-weight:800}.personnel-editor-card.is-collapsed{display:none}.personnel-editor-head{align-items:flex-start}.personnel-editor-body{padding:22px 24px 24px}.personnel-field-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.personnel-field-grid .row{margin:0}.personnel-active-row{width:max-content;min-height:40px;display:inline-flex;align-items:center;gap:10px;color:var(--ink);font-size:.82rem;font-weight:700}.account-settings-layout input[type=checkbox]{appearance:auto;width:18px;height:18px;min-width:18px;margin:0;padding:0;flex:0 0 18px;accent-color:var(--blue)}.permission-section{padding-top:20px;border-top:1px solid var(--line)}.permission-heading{align-items:baseline;margin-bottom:12px}.permission-heading strong{font-size:.88rem}.permission-heading>span{color:var(--muted);font-size:.75rem}.permission-matrix{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));border:1px solid var(--line);border-radius:10px;overflow:hidden}.permission-group{min-width:0;display:grid;gap:10px;align-content:start;padding:14px 16px;border-bottom:1px solid var(--line)}.permission-group:nth-child(odd){border-right:1px solid var(--line)}.permission-group:nth-last-child(-n+2){border-bottom:0}.permission-group strong{font-size:.8rem}.permission-options{display:flex;flex-wrap:wrap;gap:8px 16px}.permission-options label{min-height:28px;display:inline-flex;align-items:center;gap:7px;color:var(--muted);font-size:.76rem;white-space:nowrap}.personnel-editor-actions{justify-content:flex-end;padding-top:4px}.row{display:flex;flex-direction:column;gap:6px;margin-bottom:16px}.status-return-bar{padding:8px;background:var(--panel);border:1px solid var(--line);border-radius:8px;margin-bottom:16px}.status-return-bar .btn{width:100%}.hidden{display:none!important}@media(max-width:1200px){.devices-tab-layout,.devices-tab-layout:has(.devices-list-sidebar.is-expanded){grid-template-columns:1fr}.devices-list-sidebar{width:100%;height:320px;max-height:320px}.devices-list-sidebar.is-expanded{width:100%}}@media(max-width:1024px){.overview-strip{grid-template-columns:repeat(2,1fr)}.dashboard-grid,.firmware-console,.device-hero-panel,.account-settings-layout{grid-template-columns:1fr}.account-self-column{grid-template-columns:minmax(260px,.8fr) minmax(340px,1.2fr);align-items:start}}@media(max-width:768px){.status-hero,.remote-grid,.detail-actions,.status-grid{grid-template-columns:1fr}.topbar-header{flex-direction:column;height:auto;padding:20px 24px;align-items:flex-start}.topbar-actions{width:100%;margin-top:10px}.main-container{margin-left:72px}.account-self-column,.personnel-field-grid{grid-template-columns:1fr}.account-section-head-row{align-items:flex-start;flex-direction:column}.account-add-button{width:100%;justify-content:center}.permission-matrix{grid-template-columns:1fr}.permission-group:nth-child(odd){border-right:0}.permission-group:nth-last-child(-n+2){border-bottom:1px solid var(--line)}.permission-group:last-child{border-bottom:0}.personnel-editor-actions{width:100%}.personnel-editor-actions .btn{flex:1}}.btn-refresh{width:34px;height:34px;border-radius:8px;background-color:var(--secondary-btn-bg);border:1px solid var(--line);color:var(--muted);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .25s cubic-bezier(.4,0,.2,1);padding:0}.btn-refresh:hover{color:var(--blue);background-color:var(--secondary-btn-bg);border-color:var(--blue);transform:rotate(180deg);box-shadow:0 2px 8px #4880ff26}.btn-refresh:active{transform:scale(.92) rotate(180deg)}.btn-refresh svg{width:15px;height:15px;transition:stroke-width .2s ease}.btn-refresh:hover svg{stroke-width:3px}.detail-section-card{background-color:var(--panel);border:1px solid var(--line);border-radius:12px;padding:20px;display:flex;flex-direction:column;gap:16px;box-shadow:0 2px 8px #00000004;transition:transform .2s cubic-bezier(.4,0,.2,1),box-shadow .2s ease,border-color .25s ease}.detail-section-card:hover{transform:translateY(-2px);border-color:var(--blue-hover);box-shadow:0 4px 20px #0000000a}.detail-section-card .section-header{display:flex;align-items:center;gap:12px;border-bottom:1px solid var(--line);padding-bottom:12px}.detail-section-card .section-icon{font-size:1.25rem;display:flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:8px;background-color:var(--hover-bg);border:1px solid var(--line)}.detail-section-card h4{margin:0;font-size:.92rem;font-weight:700;color:var(--ink);letter-spacing:-.01em}.detail-section-card .section-body{display:flex;flex-direction:column;gap:14px;flex:1}.big-metric-display{display:flex;flex-direction:column;gap:6px;padding:14px 16px;min-height:96px;justify-content:center;background:linear-gradient(135deg,#4880ff12,#4880ff03);border:1px solid rgba(72,128,255,.18);border-radius:10px}.big-metric-display .metric-label{font-size:.75rem;color:var(--muted);font-weight:600;text-transform:uppercase;letter-spacing:.02em}.big-metric-display .big-metric-value{font-size:1.35rem;font-weight:850;color:var(--blue);font-family:var(--font-mono, monospace);letter-spacing:-.02em;line-height:1.2}.runtime-metric-stack{display:grid;grid-template-columns:minmax(0,1fr);gap:10px}.runtime-metric-display{width:100%}.runtime-metric-display .metric-label{text-transform:uppercase;letter-spacing:.02em}.runtime-metric-display .big-metric-value{font-size:1.35rem}.sub-metric-row{display:flex;justify-content:space-between;align-items:center;font-size:.85rem;padding:0 4px}.sub-metric-row .sub-label{color:var(--muted)}.sub-metric-row .sub-value{font-weight:600;color:var(--ink)}.detail-info-row{display:flex;justify-content:space-between;align-items:center;font-size:.85rem;min-height:26px}.detail-info-row .info-label{color:var(--muted)}.detail-info-row .info-value{font-weight:600;color:var(--ink);text-align:right}.detail-info-row .info-value.highlight-value{color:var(--blue);font-weight:750}.detail-info-row .info-value.serial-code{font-family:monospace;font-size:.8rem;background-color:var(--hover-bg);padding:2px 8px;border-radius:4px;border:1px solid var(--line);color:var(--ink);letter-spacing:.02em}.detail-info-row .info-value.firmware-file{font-family:monospace;font-size:.8rem;color:var(--ink);background-color:var(--hover-bg);padding:2px 8px;border-radius:4px;border:1px solid var(--line)}.detail-info-divider{height:1px;background-color:var(--line);margin:6px 0}.ota-badge{font-size:.78rem;font-weight:700;padding:4px 10px;border-radius:12px;display:inline-flex;align-items:center;justify-content:center;border:1px solid transparent}.ota-badge.ota-success{background-color:#2ecc711a;color:#27ae60;border-color:#2ecc7133}.ota-badge.ota-danger{background-color:#e74c3c1a;color:#c0392b;border-color:#e74c3c33}.ota-badge.ota-warning{background-color:#f39c121a;color:#d35400;border-color:#f39c1233}.ota-badge.ota-info{background-color:#3498db1a;color:#2980b9;border-color:#3498db33}.ota-badge.ota-unknown{background-color:var(--hover-bg);color:var(--muted);border-color:var(--line)}.remote-desktop-dialog{width:min(96vw,1440px);height:min(92vh,920px);padding:0;border:1px solid var(--line);border-radius:16px;background:var(--card);color:var(--ink);overflow:hidden}.remote-desktop-dialog::backdrop{background:#070c18d1;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.remote-desktop-shell{display:grid;grid-template-rows:auto auto auto minmax(0,1fr);height:100%;min-height:0}.remote-desktop-shell:fullscreen{width:100vw;height:100vh;grid-template-rows:minmax(0,1fr);background:var(--card)}.remote-desktop-shell:fullscreen .remote-desktop-header,.remote-desktop-shell:fullscreen .remote-desktop-connect,.remote-desktop-shell:fullscreen .remote-desktop-status,.remote-desktop-dialog.is-fallback-fullscreen .remote-desktop-header,.remote-desktop-dialog.is-fallback-fullscreen .remote-desktop-connect,.remote-desktop-dialog.is-fallback-fullscreen .remote-desktop-status{display:none!important}.remote-desktop-shell:fullscreen .remote-desktop-viewport,.remote-desktop-dialog.is-fallback-fullscreen .remote-desktop-viewport{width:100vw;height:100vh}.remote-desktop-dialog.is-fallback-fullscreen{position:fixed;inset:0;width:100vw;height:100vh;max-width:none;max-height:none;margin:0;border:0;border-radius:0}.remote-desktop-dialog.is-fallback-fullscreen .remote-desktop-shell{width:100vw;height:100vh;grid-template-rows:minmax(0,1fr)}.remote-desktop-header{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:16px 18px;border-bottom:1px solid var(--line)}.remote-desktop-header h3,.remote-desktop-header p{margin:0}.remote-desktop-device{margin-top:4px!important;color:var(--muted);font-size:16px}.remote-desktop-actions,.remote-desktop-connect{display:flex;align-items:end;gap:10px}.remote-desktop-connect{padding:14px 18px;background:var(--hover-bg);border-bottom:1px solid var(--line)}.remote-desktop-password-field{width:min(360px,70vw)}.remote-desktop-remember-row{display:flex;align-items:center;gap:8px;color:var(--muted);font-size:16px}.remote-desktop-remember-row input{width:18px;height:18px;margin:0}.remote-desktop-status{min-height:38px;padding:9px 18px;color:var(--muted);font-size:16px;border-bottom:1px solid var(--line)}.remote-desktop-status.is-error{color:var(--danger)}.remote-desktop-status.is-connected{color:var(--success)}.remote-desktop-viewport{min-width:0;min-height:0;display:grid;place-items:center;overflow:hidden;background:#0a0d12}.remote-desktop-viewport canvas{max-width:100%;max-height:100%}.device-location-dialog{width:min(920px,calc(100vw - 32px));max-height:min(92vh,860px);padding:0;border:0;border-radius:16px;background:var(--card);color:var(--ink);box-shadow:var(--shadow-lg);overflow:hidden}.device-location-dialog::backdrop{background:#070c18c7}.device-location-shell{display:flex;flex-direction:column;max-height:min(92vh,860px)}.device-location-header,.device-location-summary{display:flex;align-items:flex-start;justify-content:space-between;gap:18px}.device-location-header{padding:20px 22px 16px;border-bottom:1px solid var(--line)}.device-location-header h3,.device-location-header p,.device-location-summary p{margin:0}.device-location-header h3{margin-top:3px;font-size:1.3rem;text-wrap:balance}.device-location-device{margin-top:5px!important;color:var(--muted);font-size:.92rem}.device-location-summary{align-items:center;padding:14px 22px;background:var(--soft-bg);border-bottom:1px solid var(--line)}.device-location-summary p{margin-top:5px;color:var(--muted);font-size:.9rem;text-wrap:pretty}.device-location-state{display:inline-flex;align-items:center;min-height:28px;padding:4px 10px;border-radius:999px;background:var(--hover-bg);color:var(--muted);font-size:.82rem;font-weight:750}.device-location-state.is-current{background:var(--success-bg);color:var(--success)}.device-location-state.is-stale{background:var(--warning-bg);color:var(--warning)}.device-location-state.is-error{background:var(--danger-bg);color:var(--danger)}.device-location-map-wrap{position:relative;min-height:390px;background:var(--hover-bg)}.device-location-map{display:block;width:100%;height:430px;border:0}.device-location-map-empty{min-height:390px;display:grid;place-items:center;padding:32px;color:var(--muted);text-align:center}.device-location-facts{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));margin:0;padding:16px 22px 20px;gap:16px}.device-location-facts div{min-width:0}.device-location-facts dt{color:var(--muted);font-size:.78rem}.device-location-facts dd{margin:4px 0 0;color:var(--ink);font-size:.92rem;font-weight:700;overflow-wrap:anywhere}@media(max-width:720px){.remote-desktop-dialog{width:100vw;height:100vh;max-width:none;max-height:none;border:0;border-radius:0}.remote-desktop-header{align-items:flex-start}.remote-desktop-actions{flex-wrap:wrap;justify-content:flex-end}.device-location-dialog,.device-location-shell{width:100vw;max-width:none;max-height:100vh;border-radius:0}.device-location-summary{align-items:flex-start;flex-direction:column}.device-location-map,.device-location-map-wrap,.device-location-map-empty{min-height:340px;height:340px}.device-location-facts{grid-template-columns:repeat(2,minmax(0,1fr))}}.content-root{padding:28px var(--page-gutter) 40px;scrollbar-gutter:stable}.tab-view-content{width:min(100%,var(--page-max-width));min-width:0;margin-inline:auto}.tab-view-content.is-page-entering{animation:cloud-page-rise .3s cubic-bezier(.22,1,.36,1) both}@keyframes cloud-page-rise{0%{opacity:.35;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}.overview-strip,.dashboard-grid,.devices-tab-layout,.firmware-console{gap:var(--section-gap)}.new-device-page,.firmware-panel,.pi-update-page,.audit-log-page{gap:var(--section-gap);min-width:0}.card,.auth-card,.overview-card,.new-device-card{border-radius:var(--card-radius)}.card-head{min-height:68px;gap:16px;padding:var(--card-head-padding)}.card-body.audit-log-table-wrap{padding-top:0}.card-title{line-height:1.3}.card-head .eyebrow{display:block;margin-bottom:3px}.firmware-history-card>.card-body,#jobsPanel>.card-body,#piUpdateReportPanel>.card-body,.personnel-table-wrap{overflow:auto}.firmware-history-card .table,#jobsPanel .table,#piUpdateReportPanel .table{min-width:760px}.topbar-header{padding-inline:var(--page-gutter)}.page-title-area{min-width:0}.page-title-area h2,.page-title-area .subtitle{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media(max-width:1100px){.overview-strip{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:768px){:root,body[data-theme=light],body[data-theme=dark]{--page-gutter: 20px;--section-gap: 18px;--card-head-padding: 16px 18px;--card-body-padding: 18px}.topbar-header{gap:12px;padding:16px var(--page-gutter)}.topbar-actions{flex-wrap:wrap;gap:8px;margin-top:0}.auth-pill{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.content-root{padding-top:20px}.overview-strip{grid-template-columns:1fr;margin-bottom:var(--section-gap)}.card-head,.audit-log-head,.personnel-head{align-items:flex-start;flex-direction:column}.audit-log-tools{width:100%;min-width:0;justify-content:flex-start;flex-wrap:wrap}.audit-log-tools input{width:100%;min-width:0}}@media(prefers-reduced-motion:reduce){.tab-view-content.is-page-entering{animation:none}}#dashboardView>.overview-strip,#dashboardView>.dashboard-grid{display:none}.fleet-dashboard-toolbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:24px;gap:16px}.fleet-dashboard-modes{display:inline-flex;min-width:0;padding:4px;border:1px solid var(--line);border-radius:12px;background:var(--panel)}.fleet-mode-button{min-height:44px;padding:0 20px;border:0;border-radius:8px;background:transparent;color:var(--muted);font:inherit;font-size:.88rem;font-weight:700;cursor:pointer;touch-action:manipulation;transition:background-color .18s cubic-bezier(.22,1,.36,1),color .18s cubic-bezier(.22,1,.36,1)}.fleet-mode-button:hover,.fleet-mode-button:focus-visible{color:var(--blue);background:var(--hover-bg);outline:none}.fleet-mode-button:focus-visible{box-shadow:inset 0 0 0 2px var(--blue)}.fleet-mode-button.is-active{color:#fff;background:var(--blue)}.fleet-dashboard-toolbar-meta,.fleet-live-indicator{display:flex;align-items:center;gap:12px}.fleet-live-indicator{gap:8px;color:var(--muted);font-size:.82rem;font-weight:700;white-space:nowrap}.fleet-live-indicator>span,.fleet-status-dot{width:8px;height:8px;flex:0 0 auto;border-radius:50%;background:var(--danger)}.fleet-live-indicator>span,.fleet-status-dot.is-online{background:var(--success)}.simulated-badge,.real-device-badge{display:inline-flex;align-items:center;min-height:28px;padding:4px 10px;border:1px solid var(--danger);border-radius:8px;background:var(--danger-bg);color:var(--danger);font-size:.74rem;font-weight:800;line-height:1.2;white-space:nowrap}.simulated-badge.is-small{min-height:24px;padding:3px 7px;font-size:.68rem}.real-device-badge{border-color:var(--success);background:var(--success-bg);color:var(--success)}.fleet-dashboard-panel{display:block;min-width:0}.fleet-dashboard-panel.hidden{display:none}.fleet-overview-strip{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));margin-bottom:24px;gap:16px}.fleet-stat{display:grid;min-width:0;padding:16px 20px;gap:4px;border:1px solid var(--line);border-radius:12px;background:var(--panel)}.fleet-stat>span{color:var(--muted);font-size:.82rem;font-weight:700}.fleet-stat strong{color:var(--ink);font-size:1.75rem;font-variant-numeric:tabular-nums;line-height:1.15}.fleet-stat small{overflow:hidden;color:var(--muted);font-size:.75rem;font-weight:600;text-overflow:ellipsis;white-space:nowrap}.fleet-stat.is-online strong{color:var(--success)}.fleet-stat.is-running strong{color:var(--blue)}.fleet-stat.is-attention strong{color:var(--warning)}.fleet-data-notice{margin-bottom:16px;padding:12px 14px;border:1px solid var(--warning);border-radius:var(--card-radius);background:var(--warning-bg);color:var(--ink);font-weight:650}.fleet-primary-grid,.fleet-secondary-grid,.fleet-device-charts,.fleet-compare-grid{display:grid;min-width:0;gap:16px}.fleet-primary-grid{grid-template-columns:minmax(0,2fr) minmax(280px,1fr);margin-bottom:16px}.fleet-secondary-grid{grid-template-columns:repeat(3,minmax(0,1fr));margin-bottom:24px}.fleet-chart{min-width:0;overflow:hidden;border:1px solid var(--line);border-radius:12px;background:var(--panel)}.fleet-chart-head{display:flex;align-items:flex-start;justify-content:space-between;min-height:64px;padding:16px 16px 8px;gap:12px}.fleet-chart-head h3,.fleet-section-head h3{margin:0;color:var(--ink);font-size:1rem;font-weight:800;line-height:1.35;text-wrap:balance}.fleet-chart-head>div>span,.fleet-section-head p{display:block;margin:3px 0 0;color:var(--muted);font-size:.76rem;font-weight:600}.fleet-chart-legends{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:8px 12px}.fleet-chart-legend{display:inline-flex;align-items:center;gap:5px;color:var(--muted);font-size:.72rem;white-space:nowrap}.fleet-chart-legend i{width:14px;height:3px;border-radius:999px;background:var(--legend-color)}.fleet-chart-legend strong{color:var(--ink);font-variant-numeric:tabular-nums}.fleet-chart-unit.is-flow-unit{position:relative;left:20px}.fleet-chart-svg{display:block;width:100%;height:auto;min-height:176px;padding:0 8px 4px}.fleet-chart-grid{stroke:var(--line);stroke-width:1;stroke-dasharray:3 5}.fleet-chart-axis-label{fill:var(--muted);font-family:inherit;font-size:11px}.fleet-chart-empty,.fleet-empty{display:grid;min-height:176px;place-items:center;color:var(--muted)}.fleet-bar-chart{display:grid;padding:12px 16px 20px;gap:12px}.fleet-bar-item{display:grid;grid-template-columns:minmax(92px,.7fr) minmax(100px,1fr) auto;align-items:center;gap:10px;color:var(--muted);font-size:.78rem;font-weight:700}.fleet-bar-item strong{min-width:3ch;color:var(--ink);font-variant-numeric:tabular-nums;text-align:right}.fleet-bar-track{height:8px;overflow:hidden;border-radius:999px;background:var(--soft-bg)}.fleet-bar-track i{display:block;height:100%;border-radius:inherit;background:var(--bar-color)}.fleet-table-section{overflow:hidden;border:1px solid var(--line);border-radius:12px;background:var(--panel)}.fleet-section-head{padding:16px 20px;border-bottom:1px solid var(--line)}.fleet-table-wrap{max-height:480px;overflow:auto;scrollbar-gutter:stable}.fleet-table{width:100%;min-width:820px;border-collapse:collapse;font-size:.78rem}.fleet-table th,.fleet-table td{padding:10px 12px;border-bottom:1px solid var(--line);text-align:left;white-space:nowrap}.fleet-table th{position:sticky;top:0;z-index:1;background:var(--soft-bg);color:var(--muted);font-size:.72rem;font-weight:800}.fleet-table tbody tr:last-child td{border-bottom:0}.fleet-table tbody tr:hover{background:var(--hover-bg)}.fleet-table td:first-child strong,.fleet-table td:first-child small{display:block}.fleet-table td:first-child small{margin-top:2px;color:var(--muted)}.fleet-table td:nth-child(n+3):nth-child(-n+5){font-variant-numeric:tabular-nums}.fleet-table td:nth-child(2){display:flex;align-items:center;gap:7px}.fleet-table .is-warning-value{color:var(--danger);font-weight:800}.fleet-selector-row,.fleet-compare-selectors{display:flex;align-items:end;margin-bottom:24px;padding:16px;gap:16px;border:1px solid var(--line);border-radius:12px;background:var(--panel)}.fleet-device-field{display:grid;min-width:min(100%,360px);gap:7px;color:var(--ink);font-size:.8rem;font-weight:800}.fleet-device-field select{width:100%;min-height:44px;padding:0 38px 0 12px;border:1px solid var(--line);border-radius:8px;background:var(--field-bg);color:var(--ink);font:inherit;font-weight:600}.fleet-device-field select:focus-visible{border-color:var(--blue);outline:2px solid color-mix(in srgb,var(--blue) 34%,transparent);outline-offset:2px}.fleet-selection-note,.fleet-compare-mark{color:var(--muted);font-size:.78rem;font-weight:600}.fleet-compare-selectors{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:end}.fleet-compare-selectors .fleet-device-field{max-width:none}.fleet-compare-mark{display:grid;min-height:44px;place-items:center;padding:0 12px}.fleet-device-summary{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;margin-bottom:16px;padding:16px 20px;gap:16px;border:1px solid var(--line);border-radius:12px;background:var(--panel)}.fleet-device-label{display:block;margin-bottom:3px;color:var(--blue);font-size:.7rem;font-weight:800;letter-spacing:.06em}.fleet-device-summary h2{margin:0;color:var(--ink);font-size:1.2rem;line-height:1.3}.fleet-device-summary p{margin:3px 0 0;color:var(--muted);font-size:.78rem}.fleet-device-summary-status,.fleet-device-quick{display:flex;align-items:center;flex-wrap:wrap;gap:8px}.fleet-device-summary-status>span:last-child{color:var(--muted);font-size:.78rem;font-weight:700}.fleet-device-quick{justify-content:flex-end;gap:12px}.fleet-device-quick>span{color:var(--muted);font-size:.76rem}.fleet-device-quick strong{display:block;margin-top:2px;color:var(--ink);font-size:1rem;font-variant-numeric:tabular-nums}.fleet-device-charts{grid-template-columns:repeat(2,minmax(0,1fr))}.fleet-compare-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:24px}.fleet-compare-column{min-width:0}.fleet-compare-column .fleet-device-summary{grid-template-columns:minmax(0,1fr)}.fleet-compare-column .fleet-device-summary-status,.fleet-compare-column .fleet-device-quick{justify-content:flex-start}.fleet-compare-column .fleet-device-charts{grid-template-columns:1fr}@media(max-width:1180px){.fleet-secondary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.fleet-secondary-grid>:last-child{grid-column:1 / -1}.fleet-compare-grid{grid-template-columns:1fr}}@media(max-width:920px){.fleet-dashboard-toolbar,.fleet-selector-row{align-items:stretch;flex-direction:column}.fleet-dashboard-modes{width:100%}.fleet-mode-button{flex:1 1 0;padding-inline:12px}.fleet-dashboard-toolbar-meta{justify-content:space-between}.fleet-overview-strip,.fleet-device-charts{grid-template-columns:repeat(2,minmax(0,1fr))}.fleet-primary-grid,.fleet-secondary-grid{grid-template-columns:1fr}.fleet-secondary-grid>:last-child{grid-column:auto}.fleet-device-summary{grid-template-columns:minmax(0,1fr) auto}.fleet-device-quick{grid-column:1 / -1;justify-content:flex-start}}@media(max-width:620px){.fleet-dashboard-modes{overflow-x:auto}.fleet-mode-button{flex:0 0 auto;white-space:nowrap}.fleet-dashboard-toolbar-meta{align-items:flex-start;flex-direction:column}.fleet-overview-strip,.fleet-device-charts{grid-template-columns:1fr}.fleet-overview-strip{gap:12px}.fleet-chart-head,.fleet-device-summary{grid-template-columns:1fr;flex-direction:column}.fleet-chart-legends{justify-content:flex-start}.fleet-compare-selectors{grid-template-columns:1fr}.fleet-compare-mark{min-height:24px}}@media(prefers-reduced-motion:reduce){.fleet-mode-button{transition:none}}:root,body[data-theme=light]{--bg: #f2f5fa;--panel: #ffffff;--panel-solid: #ffffff;--line: #dce3ef;--line-strong: #c6d1e3;--ink: #172033;--muted: #5d687c;--field-bg: #f8faff;--soft-bg: #edf2fa;--hover-bg: rgba(30, 78, 155, .09);--secondary-btn-bg: #f8faff;--blue: #1e4e9b;--blue-hover: #163d7c;--card-glow: rgba(30, 78, 155, .08);--shadow: 0 1px 2px rgba(15, 34, 66, .04), 0 12px 30px rgba(15, 34, 66, .055);--shadow-lg: 0 24px 64px rgba(9, 28, 58, .18);--success: #18715f;--success-bg: rgba(24, 113, 95, .11);--danger: #ba403d;--danger-bg: rgba(186, 64, 61, .1);--delete-bg: #b4232b;--delete-hover: #941c24;--warning: #a86316;--warning-bg: rgba(168, 99, 22, .11);--chart-purple: #695ea6;--page-max-width: 1680px;--page-gutter: clamp(20px, 2.4vw, 40px);--section-gap: 24px;--card-radius: 18px;--card-head-padding: 20px 24px;--card-body-padding: 24px;--text-caption: .75rem;--text-small: .875rem;--text-body: 1rem;--text-subhead: 1.125rem;--text-title: 1.375rem;--text-page: 1.5rem}body[data-theme=dark]{--bg: #080f1d;--panel: #111d30;--panel-solid: #111d30;--line: #263752;--line-strong: #385071;--ink: #f0f4fb;--muted: #a7b3c7;--field-bg: #0c1627;--soft-bg: #192841;--hover-bg: rgba(111, 154, 225, .14);--secondary-btn-bg: #192841;--blue: #79a7f2;--blue-hover: #9bbdf5;--card-glow: rgba(121, 167, 242, .13);--shadow: 0 14px 34px rgba(0, 0, 0, .2);--shadow-lg: 0 28px 70px rgba(0, 0, 0, .38);--success: #68c7ae;--success-bg: rgba(104, 199, 174, .13);--danger: #f08a86;--danger-bg: rgba(240, 138, 134, .12);--delete-bg: #c93640;--delete-hover: #ae2832;--warning: #e4ad67;--warning-bg: rgba(228, 173, 103, .12)}body{font-size:var(--text-body);font-weight:400;line-height:1.55;font-kerning:normal;font-optical-sizing:auto;background:radial-gradient(circle at 84% -10%,rgba(54,101,176,.11),transparent 34rem),var(--bg)}button,input,select,textarea{font:inherit}button,.btn,.nav-item,input,select,textarea{-webkit-tap-highlight-color:transparent}button:focus-visible,.btn:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,a:focus-visible{outline:3px solid color-mix(in srgb,var(--blue) 26%,transparent);outline-offset:2px}.sidebar-container{width:76px;color:#dce7f8;background:#0b1f3a;border-right:0;box-shadow:8px 0 28px #091c3a29}.dashboard-shell.sidebar-expanded .sidebar-container{width:252px;box-shadow:12px 0 36px #091c3a33}.brand-section,.sidebar-footer{border-color:#dce7f821}.brand-section{height:80px}.brand-mark{width:46px;height:46px;border-radius:14px;color:#123363;background:#dce9fb;box-shadow:0 8px 22px #0000002e;font-weight:700}.brand-name{color:#fff;font-size:var(--text-body);font-weight:700}.brand-badge{color:#b6cff5;background:#dce9fb1a}.sidebar-nav{gap:6px;padding:20px 12px}.nav-item{min-height:48px;height:48px;border-radius:12px;color:#aebfda}.nav-item:hover,.nav-item.active{color:#fff;background:#dce9fb1c}.nav-item.active{box-shadow:inset 3px 0 #8eb7f5}.nav-label{font-size:var(--text-small);font-weight:600}.sidebar-toggle-btn{border-color:#dce7f833;color:#cfdbed}.sidebar-toggle-btn:hover{color:#fff;border-color:#8eb7f5;background:#dce9fb1c}.main-container{margin-left:76px;background:transparent}.dashboard-shell.sidebar-expanded .main-container{margin-left:252px}.topbar-header{height:80px;background:color-mix(in srgb,var(--panel) 92%,transparent);border-color:var(--line);box-shadow:0 1px #0f22420a;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.page-title-area h2{font-size:var(--text-page);font-weight:700;letter-spacing:0;line-height:1.25}.subtitle{margin-top:3px;color:var(--muted);font-size:var(--text-small);line-height:1.45}.topbar-actions{gap:10px}.language-switch,.theme-toggle,.auth-pill,.btn-logout{min-height:40px;border-radius:11px;border-color:var(--line);background:var(--field-bg)}.language-option,.auth-pill,.btn-logout{font-size:var(--text-small)}.language-option.is-active{color:#fff;background:var(--blue);box-shadow:none}.content-root{padding:32px var(--page-gutter) 48px}.card,.auth-card,.overview-card,.new-device-card,.fleet-mode-card,.fleet-summary-card,.fleet-chart-card,.fleet-device-row{border-color:var(--line);border-radius:var(--card-radius);box-shadow:var(--shadow)}.card-head{min-height:76px;padding:var(--card-head-padding);background:linear-gradient(180deg,color-mix(in srgb,var(--panel) 96%,var(--soft-bg)),var(--panel))}.card-body{padding:var(--card-body-padding)}.card-title,.panel-title{margin:0;font-size:var(--text-subhead);font-weight:700;letter-spacing:0;line-height:1.35}.eyebrow{color:var(--blue);font-size:var(--text-caption);font-weight:700;letter-spacing:.04em;line-height:1.35;text-transform:uppercase}.mini,.report-meta,.audit-actor-meta,.audit-target-meta{color:var(--muted);font-size:var(--text-small);line-height:1.45}.pill,.job-status,.ota-badge,.status-badge{min-height:28px;border-radius:999px;font-size:var(--text-caption);font-weight:700}input,select,textarea{min-height:46px;border:1px solid var(--line-strong);border-radius:12px;background:var(--field-bg);color:var(--ink);font-size:var(--text-body);line-height:1.45}textarea{min-height:108px}input:hover,select:hover,textarea:hover{border-color:color-mix(in srgb,var(--blue) 54%,var(--line))}input:focus,select:focus,textarea:focus{border-color:var(--blue);box-shadow:0 0 0 4px color-mix(in srgb,var(--blue) 11%,transparent)}.row label,.field label,.upload-zone label{color:var(--ink);font-size:var(--text-small);font-weight:600}.btn{min-height:44px;padding:10px 18px;border-radius:12px;font-size:var(--text-small);font-weight:700;box-shadow:none}.btn:not(.secondary):not(.danger):not(.red){color:#fff;background:var(--blue);border-color:var(--blue)}.btn:hover{transform:translateY(-1px)}.btn:active{transform:translateY(0)}.btn.secondary{color:var(--blue);background:var(--secondary-btn-bg);border-color:var(--line-strong)}.btn.danger,.btn.red,button.personnel-delete-btn,button.device-delete-btn,button[data-delete-release],button[data-delete-pi-release],button[data-delete-device],button[data-delete-device-id],button[data-delete-device-serial],button[data-permanent-delete-device-id]{color:var(--delete-bg);background:transparent;border-color:var(--delete-bg)}.btn.danger:hover,.btn.red:hover,button.personnel-delete-btn:hover,button.device-delete-btn:hover,button[data-delete-release]:hover,button[data-delete-pi-release]:hover,button[data-delete-device]:hover,button[data-delete-device-id]:hover,button[data-delete-device-serial]:hover,button[data-permanent-delete-device-id]:hover{color:var(--delete-hover);background:transparent;border-color:var(--delete-hover)}.table{border-collapse:separate;border-spacing:0}.table th{padding:13px 15px;color:var(--muted);background:var(--soft-bg);font-size:var(--text-caption);font-weight:700;letter-spacing:.035em;text-transform:uppercase}.table td{padding:15px;color:var(--ink);border-color:var(--line);font-size:var(--text-small);line-height:1.5}.table tbody tr:hover td{background:color-mix(in srgb,var(--soft-bg) 66%,transparent)}.big-metric-value,.metric-value,.fleet-summary-value,.dashboard-chart-value,.detail-info-row .info-value,.report-status,.job-status{font-variant-numeric:tabular-nums}.overview-card .value,.fleet-summary-value{font-size:1.75rem;font-weight:700;letter-spacing:-.02em}.new-device-copy{max-width:68ch;font-size:var(--text-body);line-height:1.65}.firmware-panel,.pi-update-page{display:flex;flex-direction:column;gap:var(--section-gap)}.firmware-console,#piUpdateView .firmware-console{display:grid;grid-template-columns:minmax(360px,.82fr) minmax(0,1.48fr);gap:var(--section-gap);align-items:stretch}.firmware-master-card,.pi-update-card,.firmware-history-card,.pi-update-history-card{align-self:stretch;min-height:100%}.upload-zone,.pi-update-zone{padding:22px;border:1.5px dashed color-mix(in srgb,var(--blue) 42%,var(--line));border-radius:14px;background:color-mix(in srgb,var(--soft-bg) 78%,var(--panel));text-align:left}.upload-zone:hover,.pi-update-zone:hover{border-color:var(--blue);background:var(--soft-bg)}.upload-zone input[type=file]{width:100%}.pi-update-history-scroll{height:auto;max-height:560px}.pi-update-history-card{align-self:stretch}.login-screen{--panel: #f8faff;--ink: #172033;--muted: #5d687c;--field-bg: #ffffff;--soft-bg: #edf2fa;--line: #d3ddec;--line-strong: #bdc9dd;--blue: #1e4e9b;width:min(460px,100%);padding:38px;border:1px solid var(--line);border-radius:24px;background:var(--panel);color:var(--ink);box-shadow:var(--shadow-lg)}.dashboard-shell:has(#loginCard:not(.hidden)){background:radial-gradient(circle at 20% 10%,rgba(89,137,212,.18),transparent 32rem),linear-gradient(145deg,var(--bg),color-mix(in srgb,var(--bg) 80%,#102c57))}.account-settings-layout,.status-grid,.dashboard-grid{gap:var(--section-gap)}@media(max-width:1024px){.firmware-console,#piUpdateView .firmware-console{grid-template-columns:1fr}}@media(max-width:768px){.sidebar-container{width:68px}.main-container,.dashboard-shell.sidebar-expanded .main-container{margin-left:68px}.dashboard-shell.sidebar-expanded .sidebar-container{width:min(252px,calc(100vw - 48px))}.topbar-header{height:auto;min-height:80px}.content-root{padding-top:22px}.card-head{min-height:68px}}@media(max-width:520px){:root,body[data-theme=light],body[data-theme=dark]{--page-gutter: 14px;--section-gap: 16px;--card-head-padding: 18px;--card-body-padding: 18px}.auth-pill{display:none}.login-screen{padding:26px 22px;border-radius:18px}}:root{font-family:Noto Sans Thai Looped Variable,Manrope Variable,sans-serif}body:has(.location-setup-shell){margin:0;background:var(--page-bg, #080f1d)}.location-setup-shell{min-height:100svh;display:grid;place-items:center;padding:24px;color:var(--text-main, #172033);background:var(--page-bg, #080f1d);box-sizing:border-box}.location-setup-card{width:min(100%,440px);padding:34px 28px 26px;border:0;border-radius:18px;background:var(--surface, #ffffff);box-shadow:var(--shadow-lg, 0 20px 50px rgba(8, 15, 29, .24));text-align:center;box-sizing:border-box}.location-mark{width:64px;height:64px;margin:0 auto 18px;display:grid;place-items:center;border-radius:18px;background:var(--accent-soft, #dce3ef);color:var(--accent, #1e4e9b);font:700 34px/1 Manrope Variable,sans-serif}.location-mark.is-success{background:color-mix(in srgb,var(--success) 12%,white);color:var(--success)}.location-setup-card h1{margin:0;color:var(--text-main, #172033);font-size:1.5rem;line-height:1.3;text-wrap:balance}.location-device{display:grid;gap:2px;margin:20px 0 0;padding:13px 16px;border-radius:12px;background:var(--surface-soft, #f2f5fa)}.location-device strong{font-size:1rem}.location-device span{color:var(--text-muted, #5d687c);font:600 .75rem/1.45 Manrope Variable,sans-serif}.location-message{margin:22px 0;color:var(--text-muted, #5d687c);font-size:1rem;line-height:1.55}.location-preview{display:grid;gap:6px;margin:22px 0;padding:18px;border:1px solid var(--border, #dce3ef);border-radius:18px;background:var(--surface-soft, #f2f5fa)}.location-preview-label{color:var(--accent, #1e4e9b);font-weight:700}.location-preview strong{font-size:16px}.location-preview span:last-child{color:var(--text-muted, #5d687c);font:500 .75rem/1.45 Manrope Variable,sans-serif}.location-actions{display:grid;gap:10px}.location-primary,.location-secondary{width:100%;min-height:54px;border-radius:12px;font:700 1rem/1.2 inherit;cursor:pointer}.location-primary{border:1px solid var(--accent, #1e4e9b);background:var(--accent, #1e4e9b);color:#fff}.location-secondary{border:1px solid var(--border, #dce3ef);background:transparent;color:var(--accent, #1e4e9b)}.location-primary:focus-visible,.location-secondary:focus-visible{outline:3px solid color-mix(in srgb,var(--accent) 28%,transparent);outline-offset:2px}.location-primary:hover:not(:disabled){filter:brightness(.94)}.location-secondary:hover:not(:disabled){background:var(--surface-soft, #f2f5fa)}.location-primary:disabled{opacity:.58;cursor:wait}.location-error{margin:16px 0;padding:12px;border:1px solid var(--danger);border-radius:12px;color:var(--danger);line-height:1.55}.location-privacy{margin:20px 8px 0;color:var(--text-muted, #5d687c);font-size:.75rem;line-height:1.55}@media(max-width:420px){.location-setup-shell{padding:14px}.location-setup-card{padding:28px 20px 22px}}
