*{box-sizing:border-box}html,body,#app{width:100%;min-width:0}body{margin:0;color:#1f2933;background:#f6f7f9;font-family:Arial,Microsoft YaHei,sans-serif;overflow-x:hidden}a{color:inherit;text-decoration:none}.page-shell{width:100%;min-width:0;min-height:100vh}.topbar{display:flex;align-items:center;justify-content:space-between;gap:18px;width:100%;height:64px;padding:0 32px;color:#fff;background:#111827;border-bottom:1px solid #111827}.brand{min-width:0;overflow:hidden;font-size:18px;font-weight:700;text-overflow:ellipsis;white-space:nowrap}.topbar-left{display:flex;align-items:center;gap:14px;min-width:0;max-width:100%}.sidebar-toggle{display:inline-grid;place-content:center;gap:4px;width:40px;height:40px;background:#111827;border:1px solid #ffffff;border-radius:6px;cursor:pointer}.sidebar-toggle span{display:block;width:16px;height:2px;background:#fff;border-radius:999px}.topbar-badge{flex:0 0 auto;padding:4px 10px;color:#111827;background:#fff;border-radius:999px;font-size:12px;font-weight:700}.topnav{display:flex;flex:0 0 auto;align-items:center;gap:18px;font-size:14px;font-weight:600}.topbar a,.topbar .text-button{color:#fff}.topbar .text-button:hover,.topnav a:hover{color:#d1d5db}.home-content{width:min(960px,calc(100% - 48px));margin:0 auto;padding:72px 0}.eyebrow{margin:0 0 12px;color:#18735f;font-size:13px;font-weight:700;letter-spacing:0;text-transform:none}h1{margin:0 0 16px;font-size:40px;line-height:1.15;letter-spacing:0}.intro{max-width:640px;margin:0;color:#52616f;font-size:17px;line-height:1.7}.compact-intro{font-size:15px}.home-intro{margin-bottom:32px}.latest-release,.apphub-entry{display:grid;gap:20px;padding:24px;background:#fff;border:1px solid #d9dee7;border-radius:8px}.apphub-entry{margin-bottom:20px}.section-heading h2{margin:0;font-size:26px;line-height:1.25;letter-spacing:0}.release-detail{display:grid;gap:20px}.release-meta{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 20px;margin:0}.release-meta div{min-width:0}.release-meta dt{margin-bottom:5px;color:#64748b;font-size:12px;font-weight:700}.release-meta dd{margin:0;color:#1f2933;font-size:15px;overflow-wrap:anywhere}.hash-text{font-family:Menlo,Monaco,Consolas,monospace;font-size:12px}.release-notes h3{margin:0 0 8px;font-size:16px}.release-notes p{margin:0;color:#52616f;line-height:1.7;white-space:pre-wrap}.download-button{display:inline-flex;align-items:center;justify-content:center;width:fit-content}.auth-content{width:min(520px,calc(100% - 40px));margin:0 auto;padding:48px 0}.auth-panel{padding:28px;background:#fff;border:1px solid #d9dee7;border-radius:8px}.auth-panel h1{margin-bottom:24px;font-size:28px}.auth-form{display:grid;gap:16px}.auth-form label{display:grid;gap:8px;color:#334155;font-size:14px;font-weight:600}.auth-form input{width:100%;height:42px;padding:0 12px;color:#111827;background:#fff;border:1px solid #cbd5e1;border-radius:6px;font:inherit}.auth-form input:focus{outline:2px solid #6aa89b;outline-offset:1px}.primary-button,.secondary-button{height:42px;padding:0 18px;border:0;border-radius:6px;font:inherit;font-weight:700;cursor:pointer}.primary-button{color:#fff;background:#18735f}.primary-button:disabled,.secondary-button:disabled{cursor:not-allowed;opacity:.7}.secondary-button{color:#18735f;background:#e5f3f0}.dev-fill-button{width:100%}.form-message{margin:0;font-size:14px;line-height:1.5}.form-message.success{color:#176a3a}.form-message.error{color:#b42318}.login-result{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-top:20px;padding-top:20px;border-top:1px solid #e2e8f0}.login-result p{margin:0;color:#334155;font-size:14px;font-weight:600}.text-button{padding:0;color:#1f2933;background:transparent;border:0;font:inherit;font-size:14px;font-weight:700;cursor:pointer}.app-layout{display:grid;grid-template-columns:0 minmax(0,1fr);width:100%;min-width:0;min-height:calc(100vh - 64px)}.app-layout.sidebar-open{grid-template-columns:220px minmax(0,1fr)}.sidebar{overflow:hidden;color:#fff;background:#1f1f1f}.app-layout.sidebar-open .sidebar{border-right:1px solid #1f1f1f}.app-layout.sidebar-open .admin-sidebar{padding:20px 12px}.sidebar-nav{display:grid;gap:8px;min-width:196px}.sidebar-nav-button{width:100%;padding:12px 14px;color:#d1d5db;background:transparent;border:0;border-radius:6px;font:inherit;font-weight:700;text-align:left;cursor:pointer}.sidebar-nav-button:hover{color:#fff;background:#374151}.sidebar-nav-button.active{color:#fff;background:#18735f}.main-content{display:grid;gap:24px;align-content:start;width:100%;min-width:0;max-width:100%;padding:32px}.content-section{width:100%;min-width:0;max-width:100%;background:#fff;border:1px solid #d9dee7;border-radius:8px;padding:24px}.content-section h1,.content-section h2{margin:0 0 20px;font-size:24px;line-height:1.25;letter-spacing:0}.content-section h2{font-size:20px}.info-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px 24px;margin:0}.info-grid div{min-width:0}.info-grid dt{margin-bottom:6px;color:#64748b;font-size:13px;font-weight:700}.info-grid dd{margin:0;color:#111827;font-size:15px;overflow-wrap:anywhere}.table-wrap{width:100%;min-width:0;max-width:100%;overflow-x:auto}.data-table{width:100%;min-width:840px;border-collapse:collapse;font-size:14px}.data-table th,.data-table td{padding:12px;text-align:left;border-bottom:1px solid #e2e8f0;vertical-align:top}.data-table th{color:#475569;background:#f8fafc;font-weight:700}.empty-state,.empty-cell{color:#64748b}.empty-cell{text-align:center}@media(max-width:760px){.release-meta{grid-template-columns:1fr}.download-button{width:100%}.topbar{padding:0 16px}.topbar-badge{padding:3px 8px}.app-layout.sidebar-open{grid-template-columns:64px minmax(0,1fr)}.app-layout.admin-layout.sidebar-open{grid-template-columns:minmax(0,1fr)}.app-layout.admin-layout{position:relative;grid-template-columns:minmax(0,1fr)}.admin-sidebar{position:absolute;z-index:20;top:0;bottom:0;left:0;width:0}.app-layout.sidebar-open .admin-sidebar{width:180px;padding:20px 12px;border-right:1px solid #1f1f1f;box-shadow:8px 0 20px #0f172a33}.admin-sidebar .sidebar-nav{min-width:156px}.main-content{padding:20px}.content-section{padding:18px}.info-grid,.upload-form{grid-template-columns:1fr}.tab-bar{overflow-x:auto}}.admin-topbar{justify-content:space-between}.tab-bar{display:flex;gap:8px;width:100%;min-width:0;max-width:100%;overflow-x:auto;border-bottom:1px solid #d9dee7}.tab-button{flex:0 0 auto;padding:12px 16px;color:#475569;background:transparent;border:0;border-bottom:3px solid transparent;font:inherit;font-weight:700;cursor:pointer}.tab-button.active{color:#18735f;border-bottom-color:#18735f}.admin-section-grid{display:grid;gap:24px;min-width:0}.clickable-row{cursor:pointer}.clickable-row:hover,.clickable-row.selected{background:#f0f7f5}.subsection{display:grid;gap:14px;min-width:0}.subsection h2{margin:0;font-size:20px}.selected-title{margin:0 0 12px;color:#334155;font-weight:700}.section-actions{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:16px;flex-wrap:wrap}.section-actions h1{margin:0}.upload-form{display:grid;min-width:0;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-bottom:28px;padding-bottom:24px;border-bottom:1px solid #e2e8f0}.upload-form label{display:grid;gap:8px;color:#334155;font-size:14px;font-weight:700}.upload-form input,.upload-form textarea{width:100%;padding:10px 12px;color:#111827;background:#fff;border:1px solid #cbd5e1;border-radius:6px;font:inherit}.upload-form input{min-height:42px}.upload-form textarea{resize:vertical}.wide-field{grid-column:1 / -1}.checkbox-field{display:flex!important;grid-column:1 / -1;align-items:center;gap:10px!important}.checkbox-field input{width:18px;min-height:18px}.form-actions{display:flex;grid-column:1 / -1;align-items:center;gap:14px;flex-wrap:wrap}.compact-button{height:34px;padding:0 12px;white-space:nowrap}.action-buttons{display:flex;flex-wrap:wrap;gap:8px}.admin-customer-table{min-width:980px}.release-table{min-width:1080px}.apphub-table{min-width:980px}.update-endpoint-card{display:grid;gap:14px;margin:8px 0 28px;padding:18px;background:#f0f7f5;border:1px solid #b9d9d1;border-radius:8px}.update-endpoint-card h2{margin:0 0 6px;font-size:18px}.update-endpoint-card p{margin:0;color:#52616f;line-height:1.6}.update-endpoint-row{display:flex;align-items:center;gap:10px;min-width:0}.update-endpoint-url{flex:1 1 auto;min-width:0;padding:10px 12px;color:#115e59;background:#fff;border:1px solid #99c9be;border-radius:6px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:13px;font-weight:600;overflow-wrap:anywhere}.update-endpoint-message{color:#18735f!important;font-size:13px;font-weight:700}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;display:flex;align-items:flex-start;justify-content:center;padding:72px 24px 24px;background:#11182794}.modal-panel{width:min(720px,100%);max-height:calc(100vh - 96px);overflow-y:auto;background:#fff;border:1px solid #d9dee7;border-radius:8px;box-shadow:0 20px 48px #1118273d}.small-modal{width:min(520px,100%)}.modal-header{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:20px 24px;border-bottom:1px solid #e2e8f0}.modal-header h2{margin:0;font-size:22px}.modal-close{display:grid;place-content:center;width:36px;height:36px;color:#111827;background:#f3f4f6;border:0;border-radius:6px;font-size:24px;line-height:1;cursor:pointer}.modal-close:disabled{cursor:not-allowed;opacity:.7}.modal-form{margin:0;padding:24px;border-bottom:0;grid-template-columns:repeat(2,minmax(0,1fr))}.modal-form .form-actions{margin-top:4px}@media(max-width:760px){.upload-form,.modal-form{grid-template-columns:1fr}.modal-backdrop{padding:24px 16px}.modal-panel{max-height:calc(100vh - 48px)}.tab-bar{overflow-x:auto}.update-endpoint-row,.form-actions{align-items:stretch;flex-direction:column}.update-endpoint-row .secondary-button,.form-actions .primary-button{width:100%}}.pairing-code{margin:8px 0 4px;color:#18735f;font-size:38px;font-weight:700;letter-spacing:.12em;text-align:center}.device-code{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-weight:600;letter-spacing:.04em}.stale-cell{color:#b42318;font-weight:600}.upload-progress{position:relative;height:22px;margin:4px 0 10px;border-radius:4px;background:#e6eae8;overflow:hidden}.upload-progress-bar{height:100%;background:#2f7a5f;transition:width .15s linear}.upload-progress-text{position:absolute;top:0;left:0;right:0;line-height:22px;color:#14342a;font-size:12px;font-weight:600;text-align:center}.table-wrap{max-width:100%;overflow-x:auto}
