:root{--ev-c-white: #ffffff;--ev-c-white-soft: #f8f8f8;--ev-c-white-mute: #f2f2f2;--ev-c-black: #1b1b1f;--ev-c-black-soft: #222222;--ev-c-black-mute: #282828;--ev-c-gray-1: #515c67;--ev-c-gray-2: #414853;--ev-c-gray-3: #32363f;--ev-c-text-1: rgba(255, 255, 245, .86);--ev-c-text-2: rgba(235, 235, 245, .6);--ev-c-text-3: rgba(235, 235, 245, .38);--ev-button-alt-border: transparent;--ev-button-alt-text: var(--ev-c-text-1);--ev-button-alt-bg: var(--ev-c-gray-3);--ev-button-alt-hover-border: transparent;--ev-button-alt-hover-text: var(--ev-c-text-1);--ev-button-alt-hover-bg: var(--ev-c-gray-2)}:root{--color-background: var(--ev-c-black);--color-background-soft: var(--ev-c-black-soft);--color-background-mute: var(--ev-c-black-mute);--color-text: var(--ev-c-text-1)}*,*:before,*:after{box-sizing:border-box;margin:0;font-weight:400}ul{list-style:none}body{min-height:100vh;color:var(--color-text);background:var(--color-background);line-height:1.6;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}:root{--btn-radius: 10px;--btn-height-sm: 34px;--btn-height-md: 38px;--btn-height-lg: 40px;--btn-transition: background-color .15s ease, border-color .15s ease, color .15s ease, box-shadow .15s ease, transform .08s ease;--btn-focus-ring: 0 0 0 3px rgba(37, 99, 235, .35);--btn-primary-bg: #2563eb;--btn-primary-bg-hover: #1d4ed8;--btn-primary-fg: #ffffff;--btn-neutral-bg: #ffffff;--btn-neutral-bg-hover: #f1f5f9;--btn-neutral-fg: #334155;--btn-neutral-border: #d8e0ee;--btn-neutral-border-hover: #c3cee0;--btn-subtle-bg: #eef2f7;--btn-subtle-bg-hover: #e2e8f0;--btn-subtle-fg: #334155;--btn-danger-bg: #fff5f5;--btn-danger-bg-hover: #fee2e2;--btn-danger-fg: #b91c1c;--btn-danger-border: #fecaca;--btn-danger-border-hover: #fca5a5;--btn-success-bg: #f0fdf4;--btn-success-bg-hover: #dcfce7;--btn-success-fg: #15803d;--btn-success-border: #bbf7d0;--btn-success-border-hover: #86efac;--btn-disabled-bg: #e2e8f0;--btn-disabled-fg: #94a3b8}body{min-width:960px;overflow:auto;background:#f5f7fb;-webkit-user-select:none;user-select:none}button{font:inherit}.refresh-button,.upload-button,.row-action,.row-deprecate,.row-restore,.upload-file-trigger,.upload-cancel,.upload-submit,.signing-retry,.modal-close,.pin-action,.user-logout,.update-banner-button{display:inline-flex;align-items:center;justify-content:center;gap:7px;box-sizing:border-box;cursor:pointer;border:1px solid transparent;border-radius:var(--btn-radius);font-weight:700;white-space:nowrap;transition:var(--btn-transition)}.refresh-button:active:not(:disabled),.upload-button:active:not(:disabled),.row-action:active:not(:disabled),.row-deprecate:active:not(:disabled),.row-restore:active:not(:disabled),.upload-file-trigger:active:not(:disabled),.upload-cancel:active:not(:disabled),.upload-submit:active:not(:disabled),.signing-retry:active:not(:disabled),.modal-close:active:not(:disabled),.pin-action:active:not(:disabled),.user-logout:active:not(:disabled),.update-banner-button:active:not(:disabled){transform:translateY(1px)}.refresh-button:focus-visible,.upload-button:focus-visible,.row-action:focus-visible,.row-deprecate:focus-visible,.row-restore:focus-visible,.upload-file-trigger:focus-visible,.upload-cancel:focus-visible,.upload-submit:focus-visible,.signing-retry:focus-visible,.modal-close:focus-visible,.pin-action:focus-visible,.user-logout:focus-visible,.update-banner-button:focus-visible{outline:none;box-shadow:var(--btn-focus-ring)}.refresh-button:disabled,.upload-button:disabled,.row-action:disabled,.row-deprecate:disabled,.row-restore:disabled,.upload-file-trigger:disabled,.upload-cancel:disabled,.upload-submit:disabled,.signing-retry:disabled,.pin-action:disabled,.update-banner-button:disabled{cursor:not-allowed;color:var(--btn-disabled-fg);background:var(--btn-disabled-bg);border-color:transparent;box-shadow:none}#root{min-height:100vh}.app-shell{width:min(1440px,calc(100vw - 48px));margin:0 auto;padding:32px 0 40px}.app-header{display:flex;align-items:flex-start;justify-content:space-between;gap:24px;margin-bottom:28px}.app-header h1,.device-summary h2{margin:0;color:#111827;font-weight:700;letter-spacing:-.03em}.app-header h1{font-size:36px;line-height:1.1}.dev-badge{display:inline-flex;align-items:center;gap:7px;vertical-align:middle;margin-left:14px;padding:6px 12px 6px 10px;border:1px solid #f59e0b;border-radius:999px;color:#92400e;background:#fef3c7;font-size:13px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;cursor:help;box-shadow:0 2px 8px #f59e0b40}.dev-badge-dot{width:8px;height:8px;border-radius:999px;background:#f59e0b;animation:status-dot-pulse 1.6s ease-in-out infinite}.header-description{max-width:720px;margin-top:12px;color:#5b6473;font-size:14px;line-height:1.7}.eyebrow{margin-bottom:8px;color:#64748b;font-size:12px;font-weight:700;letter-spacing:.12em;text-transform:uppercase}.pending-badge,.status-pill{display:inline-flex;align-items:center;width:fit-content;border-radius:999px;font-size:12px;font-weight:700}.user-menu{position:relative;flex-shrink:0}.user-trigger{display:flex;align-items:center;gap:10px;cursor:pointer;padding:6px 12px 6px 6px;border:1px solid #e2e8f0;border-radius:999px;background:#fff;transition:border-color .15s ease,background .15s ease}.user-trigger:hover{border-color:#cbd5e1;background:#f8fafc}.user-avatar{position:relative;display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:999px;overflow:visible;color:#fff;font-size:12px;font-weight:700;text-transform:uppercase}.user-avatar img{width:100%;height:100%;border-radius:999px;object-fit:cover}.user-health-dot{position:absolute;right:-1px;bottom:-1px;width:10px;height:10px;border-radius:999px;border:2px solid #ffffff;background:#94a3b8}.user-health-dot.is-ok{background:#22c55e}.user-health-dot.is-error{background:#ef4444}.user-health-dot.is-checking{background:#94a3b8;animation:status-dot-pulse 1.1s ease-in-out infinite}.user-name{max-width:160px;overflow:hidden;color:#0f172a;font-size:13px;font-weight:700;text-overflow:ellipsis;white-space:nowrap}.user-dropdown{position:absolute;top:calc(100% + 8px);right:0;z-index:20;min-width:220px;padding:8px;border:1px solid #e2e8f0;border-radius:14px;background:#fff;box-shadow:0 12px 32px #0f172a1f}.user-dropdown:before{content:"";position:absolute;top:-8px;left:0;right:0;height:8px}.user-dropdown-head{display:flex;flex-direction:column;gap:2px;padding:8px 10px 10px;border-bottom:1px solid #eef2f7}.user-dropdown-head strong{color:#0f172a;font-size:13px}.user-dropdown-head span{overflow:hidden;color:#64748b;font-size:12px;text-overflow:ellipsis;white-space:nowrap}.user-logout{width:100%;margin-top:6px;justify-content:flex-start;padding:9px 10px;color:var(--btn-danger-fg);background:transparent;font-size:13px}.user-logout:hover:not(:disabled){background:var(--btn-danger-bg-hover)}@keyframes status-dot-pulse{0%,to{opacity:.35}50%{opacity:1}}.update-banner{display:flex;align-items:center;gap:12px;margin-bottom:16px;padding:12px 16px;border-radius:12px;border:1px solid #e2e8f0;background:#f8fafc;color:#475569;font-size:13px;font-weight:600}.update-banner.is-ready{border-color:#bfdbfe;background:#eff6ff;color:#1e3a8a;justify-content:space-between}.update-banner-text{flex:1}.update-banner-dot{width:8px;height:8px;border-radius:999px;background:#94a3b8}.update-banner-dot.is-pulsing{animation:status-dot-pulse 1.1s ease-in-out infinite}.update-banner-button{height:var(--btn-height-sm);padding:0 16px;color:var(--btn-primary-fg);background:var(--btn-primary-bg);font-size:13px}.update-banner-button:hover:not(:disabled){background:var(--btn-primary-bg-hover)}.device-card:focus-visible,.device-toggle:focus-visible,.tabs button:focus-visible,.pin-key:focus-visible,.user-trigger:focus-visible{outline:none;box-shadow:var(--btn-focus-ring)}.device-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-bottom:12px}.device-card{display:flex;min-height:120px;cursor:pointer;flex-direction:column;gap:12px;padding:16px 18px;border:1px solid #e2e8f0;border-radius:18px;color:#1f2937;background:#fff;text-align:left;transition:border-color .16s ease,background-color .16s ease,transform .16s ease}.device-card:hover{border-color:#93c5fd;transform:translateY(-1px)}.device-card.is-selected{border-color:#2563eb;background:#eff6ff}.device-card-header,.device-stats,.tabs{display:flex;align-items:center}.device-card-header{justify-content:space-between;gap:10px}.device-name{color:#111827;font-size:17px;font-weight:700}.pending-badge{flex-shrink:0;padding:4px 8px;color:#92400e;background:#fef3c7}.device-stats{gap:12px;margin-top:auto}.device-stats span{display:flex;flex-direction:column;min-width:70px;color:#64748b;font-size:12px}.device-stats strong{color:#111827;font-size:22px;font-weight:700;line-height:1.2}.device-toggle{display:inline-flex;align-items:center;gap:6px;margin:0 0 22px;padding:7px 14px;border:1px solid #e2e8f0;border-radius:999px;background:#f8fafc;color:#475569;font-size:13px;font-weight:600;cursor:pointer;transition:border-color .16s ease,background-color .16s ease,color .16s ease}.device-toggle:hover{border-color:#93c5fd;color:#2563eb}.device-toggle-caret{display:block;flex-shrink:0;transition:transform .16s ease}.device-toggle-caret.is-open{transform:rotate(180deg)}.workspace-card{padding:20px;border:1px solid #e2e8f0;border-radius:24px;background:#fff}.task-panel{min-width:0}.tabs{width:fit-content;gap:4px;padding:4px;border-radius:14px;background:#eef2f7}.tabs button{cursor:pointer;border:0;border-radius:11px;padding:9px 14px;color:#64748b;background:transparent;font-size:13px;font-weight:700;transition:color .15s ease,background .15s ease}.tabs button:hover:not(.is-active){color:#334155}.tabs button.is-active{color:#111827;background:#fff;box-shadow:0 1px 3px #0f172a14}.task-table{margin-top:16px;overflow-x:auto;overflow-y:hidden;border:1px solid #e5e7eb;border-radius:18px}.table-header,.table-row{display:grid;grid-template-columns:minmax(150px,1.4fr) minmax(58px,.45fr) minmax(72px,.5fr) minmax(100px,.6fr) minmax(64px,.4fr) minmax(120px,.75fr) minmax(88px,.55fr) minmax(120px,.7fr) minmax(116px,.85fr) minmax(80px,.55fr);align-items:center;gap:16px;min-width:1180px}.table-header{padding:12px 16px;color:#64748b;background:#f8fafc;font-size:12px;font-weight:700}.table-row{min-height:78px;padding:14px 16px;border-top:1px solid #eef2f7;color:#334155;font-size:13px}.package-cell{display:flex;min-width:0;flex-direction:column;gap:4px}.package-cell strong{overflow:hidden;color:#111827;font-weight:700;text-overflow:ellipsis;white-space:nowrap}.package-cell span{color:#64748b;font-size:12px}.version-cell{color:#334155;font-weight:600}.signer-count{color:#334155;font-size:14px;font-weight:700;font-variant-numeric:tabular-nums}.commit-cell{overflow:hidden;color:#475569;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,monospace;font-size:12px;text-overflow:ellipsis;white-space:nowrap}.time-cell{color:#64748b;font-size:12px;white-space:nowrap}.uploader-cell{overflow:hidden;color:#334155;font-size:13px;text-overflow:ellipsis;white-space:nowrap}.status-pill{justify-content:center;padding:6px 10px}.status-waiting{color:#92400e;background:#fef3c7}.status-signing{color:#1d4ed8;background:#dbeafe}.status-ready{color:#166534;background:#dcfce7}.status-deprecated{color:#64748b;background:#e2e8f0}.action-cell{display:flex;align-items:center}.row-action,.row-deprecate,.row-restore{width:100%;height:var(--btn-height-sm);padding:0 12px;font-size:12px}.row-action{color:var(--btn-primary-fg);background:var(--btn-primary-bg)}.row-action:hover:not(:disabled){background:var(--btn-primary-bg-hover)}.row-deprecate{border-color:var(--btn-danger-border);color:var(--btn-danger-fg);background:var(--btn-danger-bg)}.row-deprecate:hover:not(:disabled){border-color:var(--btn-danger-border-hover);background:var(--btn-danger-bg-hover)}.row-restore{border-color:var(--btn-success-border);color:var(--btn-success-fg);background:var(--btn-success-bg)}.row-restore:hover:not(:disabled){border-color:var(--btn-success-border-hover);background:var(--btn-success-bg-hover)}.action-empty{color:#cbd5e1;font-size:13px}.empty-state{padding:40px 16px;color:#64748b;text-align:center}.task-panel-head{display:flex;align-items:center;justify-content:space-between;gap:16px}.task-actions{display:flex;align-items:center;gap:10px}.refresh-button,.upload-button{height:var(--btn-height-md);padding:0 18px;font-size:13px}.refresh-button{border-color:var(--btn-neutral-border);color:var(--btn-neutral-fg);background:var(--btn-neutral-bg)}.refresh-button:hover:not(:disabled){border-color:var(--btn-neutral-border-hover);background:var(--btn-neutral-bg-hover)}.refresh-button:disabled{cursor:progress;color:var(--btn-disabled-fg);background:var(--btn-neutral-bg);border-color:var(--btn-neutral-border)}.refresh-button svg{display:block}.refresh-button.is-loading svg{animation:refresh-spin .8s linear infinite}@keyframes refresh-spin{to{transform:rotate(360deg)}}.upload-button{color:var(--btn-primary-fg);background:var(--btn-primary-bg)}.upload-button:hover:not(:disabled){background:var(--btn-primary-bg-hover)}.upload-button-icon{font-size:16px;line-height:1}.upload-modal{width:min(460px,100%);max-height:calc(100vh - 64px);overflow:auto;border:1px solid #dbe3ef;border-radius:22px;background:#fff}.upload-modal .modal-header{align-items:center}.upload-modal .modal-description{margin:0;padding:16px 24px 0;color:#64748b;font-size:13px;line-height:1.6}.upload-form{display:flex;flex-direction:column;gap:18px;padding:18px 24px 24px}.upload-field{display:flex;flex-direction:column;gap:8px}.upload-label{color:#334155;font-size:13px;font-weight:700}.upload-label em{margin-left:2px;color:#dc2626;font-style:normal}.upload-input{height:42px;padding:0 14px;border:1px solid #d8e0ee;border-radius:12px;color:#0f172a;background:#f8fafc;font-size:14px;transition:border-color .15s ease,background .15s ease,box-shadow .15s ease}.upload-input::placeholder{color:#94a3b8}.upload-input:focus{outline:none;border-color:#2563eb;background:#fff;box-shadow:0 0 0 3px #2563eb1f}.version-input{display:flex;align-items:center;gap:8px}.version-prefix{color:#334155;font-size:16px;font-weight:700}.version-seg{width:68px;height:42px;padding:0 8px;border:1px solid #d8e0ee;border-radius:12px;color:#0f172a;background:#f8fafc;font-size:14px;font-variant-numeric:tabular-nums;text-align:center;transition:border-color .15s ease,background .15s ease,box-shadow .15s ease}.version-seg::placeholder{color:#cbd5e1}.version-seg:focus{outline:none;border-color:#2563eb;background:#fff;box-shadow:0 0 0 3px #2563eb1f}.version-dot{color:#94a3b8;font-size:16px;font-weight:700}.upload-dropzone{display:flex;align-items:center;gap:12px;padding:12px 14px;border:1px dashed #cbd5e1;border-radius:12px;background:#f8fafc;transition:border-color .15s ease,background .15s ease}.upload-dropzone.has-file{border-style:solid;border-color:#bfdbfe;background:#eff6ff}.upload-file-input{display:none}.upload-file-trigger{flex-shrink:0;height:var(--btn-height-sm);padding:0 14px;border-color:var(--btn-neutral-border);color:var(--btn-neutral-fg);background:var(--btn-neutral-bg);font-size:13px}.upload-file-trigger:hover{border-color:var(--btn-neutral-border-hover);background:var(--btn-neutral-bg-hover)}.upload-file-name{overflow:hidden;color:#64748b;font-size:13px;text-overflow:ellipsis;white-space:nowrap}.upload-dropzone.has-file .upload-file-name{color:#1d4ed8;font-weight:600}.upload-field-error{color:#dc2626;font-size:12px}.upload-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:4px}.upload-cancel,.upload-submit,.signing-retry{height:var(--btn-height-lg);gap:8px;padding:0 22px;font-size:14px}.upload-cancel{border-color:var(--btn-neutral-border);color:var(--btn-neutral-fg);background:var(--btn-neutral-bg)}.upload-cancel:hover:not(:disabled){border-color:var(--btn-neutral-border-hover);background:var(--btn-neutral-bg-hover)}.upload-submit{color:var(--btn-primary-fg);background:var(--btn-primary-bg)}.upload-submit:hover:not(:disabled){background:var(--btn-primary-bg-hover)}.modal-backdrop{position:fixed;inset:0;z-index:20;display:flex;align-items:center;justify-content:center;padding:32px;background:#0f172a73}.signer-modal{width:min(920px,100%);max-height:calc(100vh - 64px);overflow:auto;border:1px solid #dbe3ef;border-radius:22px;background:#fff}.modal-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:22px 24px 16px;border-bottom:1px solid #eef2f7}.modal-header h2{margin:0;color:#111827;font-size:22px;font-weight:700}.modal-close{height:var(--btn-height-sm);padding:0 14px;color:var(--btn-subtle-fg);background:var(--btn-subtle-bg);font-size:13px}.modal-close:hover:not(:disabled){background:var(--btn-subtle-bg-hover)}.modal-close:disabled{cursor:not-allowed;opacity:.5}.modal-description{padding:16px 24px 0;color:#5b6473;font-size:13px;line-height:1.7}.modal-description code{border-radius:6px;padding:2px 6px;color:#1e40af;background:#dbeafe;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12px}.modal-loading{margin:16px 24px 24px;border-radius:14px;padding:14px;color:#1d4ed8;background:#dbeafe;font-size:13px;font-weight:700}.signing-steps{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;padding:16px 24px 0}.signing-step{display:flex;gap:12px;border:1px solid #e5e7eb;border-radius:14px;padding:14px;background:#fff}.signing-step>span{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;flex-shrink:0;border-radius:999px;color:#64748b;background:#eef2f7;font-size:13px;font-weight:800}.signing-step strong{display:block;color:#111827;font-size:14px;font-weight:800}.signing-step p{margin-top:4px;color:#64748b;font-size:12px;line-height:1.5}.signing-step.is-active{border-color:#93c5fd;background:#eff6ff}.signing-step.is-active>span{color:#fff;background:#2563eb}.signing-step.is-success{border-color:#86efac;background:#f0fdf4}.signing-step.is-success>span{color:#166534;background:#dcfce7}.signing-error{display:flex;align-items:flex-start;gap:10px;margin:16px 24px 0;padding:12px 14px;border:1px solid #fecaca;border-radius:14px;background:#fff1f2}.signing-error-icon{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;flex-shrink:0;border-radius:999px;color:#b91c1c;background:#fee2e2}.signing-error p{margin:0;padding-top:2px;color:#991b1b;font-size:13px;line-height:1.6;white-space:pre-wrap;word-break:break-word}.signing-actions{display:flex;flex-direction:column;align-items:center;gap:12px;padding:20px 24px 24px}.signing-actions-hint{margin:0;color:#64748b;font-size:13px;text-align:center}.signing-retry{color:var(--btn-primary-fg);background:var(--btn-primary-bg)}.signing-retry:hover:not(:disabled){background:var(--btn-primary-bg-hover)}.diagnostics-result{display:grid;gap:14px;padding:16px 24px 24px}.runtime-paths{display:grid;gap:6px;border-radius:14px;padding:12px;color:#475569;background:#f8fafc;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px}.signature-summary{display:grid;gap:10px;border:1px solid #bbf7d0;border-radius:16px;padding:16px;background:#f0fdf4}.signature-summary h3{margin:0;color:#14532d;font-size:15px;font-weight:800}.signature-summary div{display:grid;gap:4px}.signature-summary span{color:#166534;font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase}.signature-summary strong{overflow-wrap:anywhere;color:#111827;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12px;font-weight:700;line-height:1.6}.command-block{overflow:hidden;margin:16px 24px 20px;border:1px solid #e5e7eb;border-radius:14px}.command-title{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;color:#111827;background:#f8fafc;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12px}.command-title strong{overflow:hidden;font-weight:700;text-overflow:ellipsis;white-space:nowrap}.exit-ok,.exit-error{flex-shrink:0;border-radius:999px;padding:4px 8px;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:11px;font-weight:700}.exit-ok{color:#166534;background:#dcfce7}.exit-error{color:#991b1b;background:#fee2e2}.command-output{max-height:220px;overflow:auto;margin:0;padding:14px;color:#1f2937;background:#fff;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12px;line-height:1.6;white-space:pre-wrap;overflow-wrap:anywhere;word-break:break-word}.command-output+.command-output{border-top:1px solid #eef2f7}.command-output.is-error{color:#991b1b;background:#fff7f7}.pin-modal{width:min(420px,100%);padding:24px;border:1px solid #dbe3ef;border-radius:22px;background:#fff;box-shadow:0 24px 60px #0f172a2e}.pin-modal-header h2{margin:6px 0 0;color:#111827;font-size:20px;font-weight:700}.pin-hint{margin:14px 0 0;color:#5b6473;font-size:13px;line-height:1.7}.pin-hint strong{color:#1d4ed8}.pin-warning{display:flex;flex-direction:column;gap:6px;margin:14px 0 0;border:1px solid #fcd34d;border-radius:12px;padding:12px 14px;background:#fffbeb}.pin-warning strong{color:#b45309;font-size:13px}.pin-warning span{color:#92400e;font-size:12px;line-height:1.7}.pin-warning span strong{font-size:inherit}.reboot-hint{margin:16px 24px 0;border:1px solid #fca5a5;border-radius:14px;padding:14px 16px;background:#fef2f2}.reboot-hint strong{display:block;color:#b91c1c;font-size:14px;font-weight:800}.reboot-hint p{margin:6px 0 0;color:#991b1b;font-size:13px;line-height:1.7}.pin-display{display:flex;align-items:center;justify-content:center;gap:8px;min-height:28px;margin:18px 0 0;border:1px solid #e5e7eb;border-radius:12px;padding:12px;background:#f8fafc}.pin-display-placeholder{color:#94a3b8;font-size:13px}.pin-dot{width:10px;height:10px;border-radius:999px;background:#1f2937}.pin-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:18px 0 0}.pin-key{display:flex;align-items:center;justify-content:center;aspect-ratio:1 / 1;cursor:pointer;border:1px solid #d8e0ee;border-radius:16px;background:#fff;transition:border-color .14s ease,background-color .14s ease,transform .14s ease}.pin-key:hover{border-color:#93c5fd;background:#eff6ff}.pin-key:active{transform:scale(.96);background:#dbeafe}.pin-key-dot{width:14px;height:14px;border-radius:999px;background:#cbd5e1}.pin-key:hover .pin-key-dot{background:#2563eb}.pin-actions{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:20px 0 0}.pin-action{height:var(--btn-height-lg);font-size:14px}.pin-action:disabled{cursor:not-allowed;color:var(--btn-disabled-fg);background:var(--btn-disabled-bg);opacity:.6}.pin-action-ghost{color:var(--btn-subtle-fg);background:var(--btn-subtle-bg)}.pin-action-ghost:hover:not(:disabled){background:var(--btn-subtle-bg-hover)}.pin-action-primary{color:var(--btn-primary-fg);background:var(--btn-primary-bg)}.pin-action-primary:hover:not(:disabled){background:var(--btn-primary-bg-hover)}@media(max-width:1100px){.device-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.workspace-card{grid-template-columns:1fr}}.shell-gate{display:grid;place-items:center;min-height:100vh;padding:32px 24px}.shell-gate-card{width:min(560px,100%);padding:40px 36px;border:1px solid #e5e7eb;border-radius:24px;background:#fff;box-shadow:0 24px 60px #0f172a14}.shell-gate-card h1{margin:8px 0 0;color:#111827;font-size:32px;font-weight:700;letter-spacing:-.03em}.shell-gate-description{margin:16px 0 0;color:#5b6473;font-size:15px;line-height:1.7}.shell-gate-list{margin:24px 0 0;padding-left:20px;color:#374151;font-size:14px;line-height:1.8}.toast-viewport{position:fixed;top:20px;right:20px;z-index:1000;display:flex;flex-direction:column;gap:12px;width:min(380px,calc(100vw - 40px));pointer-events:none}.toast{display:flex;align-items:flex-start;gap:12px;padding:14px 14px 14px 16px;border:1px solid #e2e8f0;border-left-width:4px;border-radius:14px;background:#fff;box-shadow:0 16px 40px #0f172a29;pointer-events:auto;animation:toast-in .22s ease-out}@keyframes toast-in{0%{opacity:0;transform:translate(16px)}to{opacity:1;transform:translate(0)}}.toast-success{border-left-color:#22c55e}.toast-error{border-left-color:#ef4444}.toast-info{border-left-color:#2563eb}.toast-icon{display:flex;align-items:center;justify-content:center;width:28px;height:28px;flex-shrink:0;border-radius:999px}.toast-success .toast-icon{color:#15803d;background:#dcfce7}.toast-error .toast-icon{color:#b91c1c;background:#fee2e2}.toast-info .toast-icon{color:#1d4ed8;background:#dbeafe}.toast-body{display:flex;flex-direction:column;gap:2px;min-width:0;padding-top:3px}.toast-title{color:#111827;font-size:14px;font-weight:600;line-height:1.35}.toast-message{color:#5b6473;font-size:13px;line-height:1.5;word-break:break-word}.toast-close{flex-shrink:0;margin-left:auto;padding:0 4px;border:none;background:transparent;color:#94a3b8;font-size:20px;line-height:1;cursor:pointer}.toast-close:hover{color:#475569}
