.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:9px 16px;border-radius:var(--radius-md);border:1px solid var(--line-strong);background:linear-gradient(180deg,var(--surface-3),var(--surface-2));color:var(--ink);font-weight:550;font-size:var(--text-sm);line-height:1.2;box-shadow:var(--edge),0 1px 2px #0000002e;transition:background var(--dur-fast) var(--ease),border-color var(--dur-fast) var(--ease),transform var(--dur-fast) var(--ease),box-shadow var(--dur-fast) var(--ease),opacity var(--dur-fast) var(--ease);-webkit-user-select:none;user-select:none;white-space:nowrap}.btn:hover{border-color:var(--line-strong);transform:translateY(-1px);box-shadow:var(--edge),0 4px 12px #00000038}.btn:active{transform:translateY(0) scale(.985);box-shadow:var(--edge)}.btn:disabled{opacity:.45;cursor:default;transform:none;box-shadow:none}.btn.primary{background:linear-gradient(180deg,var(--accent-strong),var(--accent));border-color:transparent;color:var(--accent-ink);font-weight:650;box-shadow:inset 0 1px #ffffff47,0 2px 10px var(--accent-glow)}.btn.primary:hover{box-shadow:inset 0 1px #ffffff47,0 4px 18px var(--accent-glow);filter:brightness(1.04)}.btn.danger{background:var(--bad-soft);border-color:color-mix(in srgb,var(--bad) 50%,transparent);color:var(--bad);box-shadow:none}.btn.ghost{background:transparent;border-color:transparent;box-shadow:none}.btn.ghost:hover{background:var(--surface-2);transform:none;box-shadow:none}.btn.sm{padding:5px 11px;font-size:var(--text-xs);border-radius:var(--radius-sm)}.btn.lg{padding:12px 22px;font-size:var(--text-md);border-radius:var(--radius-md)}.btn.block{width:100%}.btn .lucide{width:15px;height:15px}.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:var(--radius-sm);border:1px solid transparent;background:transparent;color:var(--ink-soft);transition:background var(--dur-fast) var(--ease),color var(--dur-fast) var(--ease)}.icon-btn:hover{background:var(--surface-2);color:var(--ink)}.icon-btn .lucide{width:17px;height:17px}.card{background:linear-gradient(180deg,color-mix(in srgb,var(--surface) 92%,white 2%),var(--surface));border:1px solid var(--line);border-radius:var(--radius-lg);padding:20px;box-shadow:var(--edge),var(--shadow-1)}.card.flush{padding:0;overflow:hidden}.card.hoverable{transition:transform var(--dur-med) var(--ease-out),box-shadow var(--dur-med) var(--ease-out),border-color var(--dur-med) var(--ease);cursor:pointer}.card.hoverable:hover{transform:translateY(-2px);box-shadow:var(--edge),var(--shadow-2);border-color:var(--line-strong)}.card-head{display:flex;align-items:center;gap:10px;margin-bottom:14px}.card-head h3{font-size:var(--text-md);font-weight:650}.card-head .spacer{margin-left:auto}.dot{width:8px;height:8px;border-radius:50%;flex:none;background:var(--ink-faint);transition:background var(--dur-med) var(--ease),box-shadow var(--dur-med) var(--ease)}.dot.ok{background:var(--ok);box-shadow:0 0 0 3px var(--ok-soft),0 0 10px color-mix(in srgb,var(--ok) 45%,transparent)}.dot.warn{background:var(--warn);box-shadow:0 0 0 3px var(--warn-soft),0 0 10px color-mix(in srgb,var(--warn) 45%,transparent)}.dot.bad{background:var(--bad);box-shadow:0 0 0 3px var(--bad-soft),0 0 10px color-mix(in srgb,var(--bad) 45%,transparent)}.dot.pulse.ok{animation:dotpulse 2.4s var(--ease) infinite}@keyframes dotpulse{0%,to{box-shadow:0 0 0 3px var(--ok-soft)}50%{box-shadow:0 0 0 7px transparent}}.badge{display:inline-flex;align-items:center;gap:6px;padding:3px 10px;border-radius:var(--radius-pill);font-size:var(--text-xs);font-weight:600;letter-spacing:.01em;background:var(--surface-2);color:var(--ink-soft);border:1px solid var(--line)}.badge.ok{background:var(--ok-soft);color:var(--ok);border-color:color-mix(in srgb,var(--ok) 22%,transparent)}.badge.warn{background:var(--warn-soft);color:var(--warn);border-color:color-mix(in srgb,var(--warn) 22%,transparent)}.badge.bad{background:var(--bad-soft);color:var(--bad);border-color:color-mix(in srgb,var(--bad) 22%,transparent)}.badge.accent{background:var(--accent-soft);color:var(--accent);border-color:color-mix(in srgb,var(--accent) 25%,transparent)}.badge.info{background:var(--info-soft);color:var(--info);border-color:color-mix(in srgb,var(--info) 22%,transparent)}.badge.pulse{animation:badgepulse 1.8s var(--ease) infinite}@keyframes badgepulse{0%,to{opacity:1}50%{opacity:.55}}.input,.select,.textarea{width:100%;padding:10px 13px;border-radius:var(--radius-md);border:1px solid var(--line-strong);background:color-mix(in srgb,var(--bg) 70%,var(--surface));color:var(--ink);transition:border-color var(--dur-fast) var(--ease),background var(--dur-fast) var(--ease),box-shadow var(--dur-fast) var(--ease)}.input:focus,.select:focus,.textarea:focus{border-color:var(--accent-line);outline:none;box-shadow:0 0 0 3px var(--accent-soft);background:var(--bg-raised)}.input::placeholder{color:var(--ink-faint)}.field{display:grid;gap:6px}.field>label{font-size:var(--text-xs);font-weight:650;color:var(--ink-soft);text-transform:uppercase;letter-spacing:.07em}.field .hint{font-size:var(--text-xs);color:var(--ink-faint)}.toggle{position:relative;width:42px;height:24px;border-radius:var(--radius-pill);background:var(--surface-3);border:1px solid var(--line-strong);padding:0;flex:none;transition:background var(--dur-med) var(--ease),border-color var(--dur-med) var(--ease),box-shadow var(--dur-med) var(--ease)}.toggle:after{content:"";position:absolute;top:2px;left:2px;width:18px;height:18px;border-radius:50%;background:var(--ink-soft);box-shadow:0 1px 3px #0000004d;transition:transform var(--dur-med) var(--ease-out),background var(--dur-med) var(--ease)}.toggle[aria-checked=true]{background:var(--accent);border-color:var(--accent);box-shadow:0 0 12px var(--accent-glow)}.toggle[aria-checked=true]:after{transform:translate(18px);background:var(--accent-ink)}.table-wrap{overflow-x:auto;border-radius:var(--radius-lg);border:1px solid var(--line);background:var(--surface);box-shadow:var(--edge),var(--shadow-1)}table.fleet{width:100%;border-collapse:collapse;font-size:var(--text-sm)}table.fleet th{text-align:left;padding:11px 16px;font-size:var(--text-xs);font-weight:650;color:var(--ink-faint);text-transform:uppercase;letter-spacing:.07em;border-bottom:1px solid var(--line);white-space:nowrap;background:color-mix(in srgb,var(--surface-2) 55%,transparent)}table.fleet td{padding:12px 16px;border-bottom:1px solid var(--line);vertical-align:middle}table.fleet tbody tr{transition:background var(--dur-fast) var(--ease)}table.fleet tbody tr:hover{background:var(--surface-2)}table.fleet tbody tr.clickable{cursor:pointer}table.fleet tbody tr:last-child td{border-bottom:none}.tabs{display:flex;gap:2px;border-bottom:1px solid var(--line);overflow-x:auto}.tabs button{padding:10px 15px;border:none;background:transparent;color:var(--ink-soft);font-size:var(--text-sm);font-weight:500;border-bottom:2px solid transparent;margin-bottom:-1px;white-space:nowrap;border-radius:var(--radius-sm) var(--radius-sm) 0 0;transition:color var(--dur-fast) var(--ease),border-color var(--dur-fast) var(--ease),background var(--dur-fast) var(--ease)}.tabs button:hover{color:var(--ink);background:color-mix(in srgb,var(--surface-2) 55%,transparent)}.tabs button.active{color:var(--ink);border-bottom-color:var(--accent);font-weight:600}.overlay-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--backdrop);z-index:60;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);animation:fadein var(--dur-med) var(--ease)}@keyframes fadein{0%{opacity:0}to{opacity:1}}.sheet{position:fixed;left:0;right:0;bottom:0;z-index:61;background:var(--glass-raised);-webkit-backdrop-filter:blur(24px) saturate(1.3);backdrop-filter:blur(24px) saturate(1.3);border-top:1px solid var(--line-strong);border-radius:calc(var(--radius-lg) + 4px) calc(var(--radius-lg) + 4px) 0 0;box-shadow:var(--shadow-sheet);max-height:88dvh;overflow-y:auto;padding:18px 18px calc(18px + var(--safe-bottom));animation:sheetup var(--dur-slow) var(--ease-out)}@keyframes sheetup{0%{transform:translateY(32px);opacity:0}to{transform:none;opacity:1}}.drawer{position:fixed;top:0;right:0;bottom:0;z-index:61;width:min(480px,94vw);background:var(--glass-raised);-webkit-backdrop-filter:blur(24px) saturate(1.3);backdrop-filter:blur(24px) saturate(1.3);border-left:1px solid var(--line-strong);box-shadow:var(--shadow-2);overflow-y:auto;padding:20px;animation:drawerin var(--dur-slow) var(--ease-out)}@keyframes drawerin{0%{transform:translate(32px);opacity:0}to{transform:none;opacity:1}}.sheet-grab{width:38px;height:4px;border-radius:2px;background:var(--line-strong);margin:0 auto 14px}.toast-host{position:fixed;bottom:calc(var(--bottomnav-h) + var(--safe-bottom) + 16px);left:50%;transform:translate(-50%);z-index:90;display:grid;gap:8px;width:min(420px,calc(100vw - 32px));pointer-events:none}@media (min-width: 900px){.toast-host{bottom:24px}}.toast{pointer-events:auto;display:flex;align-items:center;gap:10px;background:var(--glass-raised);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);border:1px solid var(--line-strong);color:var(--ink);border-radius:var(--radius-md);padding:12px 15px;font-size:var(--text-sm);box-shadow:var(--shadow-2);animation:toastin var(--dur-med) var(--ease-out)}.toast.err{border-color:color-mix(in srgb,var(--bad) 55%,transparent)}.toast.ok-t{border-color:color-mix(in srgb,var(--ok) 55%,transparent)}@keyframes toastin{0%{transform:translateY(10px);opacity:0}to{transform:none;opacity:1}}.empty{display:grid;place-items:center;gap:8px;text-align:center;padding:48px 20px;color:var(--ink-faint);border:1px dashed var(--line-strong);border-radius:var(--radius-lg);font-size:var(--text-sm);background:color-mix(in srgb,var(--surface) 40%,transparent)}.skeleton{border-radius:var(--radius-sm);background:linear-gradient(100deg,var(--surface-2) 40%,var(--surface-3) 50%,var(--surface-2) 60%);background-size:200% 100%;animation:shimmer 1.6s linear infinite;min-height:14px}@keyframes shimmer{to{background-position:-200% 0}}.metric{display:grid;gap:4px}.metric b{font-size:var(--text-3xl);font-weight:650;letter-spacing:-.03em;line-height:1.05;font-variant-numeric:tabular-nums}.metric span{font-size:var(--text-xs);color:var(--ink-soft);font-weight:550;text-transform:uppercase;letter-spacing:.06em}.kv{display:grid;grid-template-columns:minmax(110px,auto) 1fr;gap:6px 16px;font-size:var(--text-sm)}.kv dt{color:var(--ink-faint)}.kv dd{margin:0}.page{padding:26px 26px 40px;max-width:var(--content-max);margin:0 auto;width:100%;animation:pagein var(--dur-slow) var(--ease-out)}@keyframes pagein{0%{transform:translateY(6px);opacity:0}to{transform:none;opacity:1}}.page-title{font-size:var(--text-2xl);font-weight:680;letter-spacing:-.028em;margin-bottom:4px}.page-sub{color:var(--ink-soft);font-size:var(--text-sm)}.page-head{display:flex;align-items:flex-end;gap:14px;flex-wrap:wrap;margin-bottom:22px}.page-head .actions{margin-left:auto;display:flex;gap:8px}.grid{display:grid;gap:16px}.grid.cols-2{grid-template-columns:repeat(2,1fr)}.grid.cols-3{grid-template-columns:repeat(3,1fr)}.grid.cols-4{grid-template-columns:repeat(4,1fr)}@media (max-width: 980px){.grid.cols-3,.grid.cols-4{grid-template-columns:repeat(2,1fr)}}@media (max-width: 620px){.grid.cols-2,.grid.cols-3,.grid.cols-4{grid-template-columns:1fr}}.rowlist{display:grid;gap:9px}.obj-row{display:flex;align-items:center;gap:12px;padding:14px 16px;background:linear-gradient(180deg,color-mix(in srgb,var(--surface) 92%,white 2%),var(--surface));border:1px solid var(--line);border-radius:var(--radius-md);box-shadow:var(--edge);transition:background var(--dur-fast) var(--ease),border-color var(--dur-fast) var(--ease),transform var(--dur-fast) var(--ease),box-shadow var(--dur-fast) var(--ease);text-align:left;width:100%}.obj-row:hover{border-color:var(--line-strong);transform:translateY(-1px);box-shadow:var(--edge),var(--shadow-1)}.obj-row .grow{flex:1;min-width:0}.obj-row .title{font-weight:600;font-size:var(--text-sm);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.obj-row .sub{font-size:var(--text-xs);color:var(--ink-soft);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dialog{position:fixed;z-index:70;top:50%;left:50%;transform:translate(-50%,-50%);width:min(420px,calc(100vw - 40px));background:var(--glass-raised);-webkit-backdrop-filter:blur(24px) saturate(1.3);backdrop-filter:blur(24px) saturate(1.3);border:1px solid var(--line-strong);border-radius:var(--radius-lg);box-shadow:var(--shadow-2);padding:24px;animation:dialogin var(--dur-med) var(--ease-out)}@keyframes dialogin{0%{transform:translate(-50%,-47%);opacity:0}to{transform:translate(-50%,-50%);opacity:1}}.remote-hub{display:grid;grid-template-columns:240px minmax(0,1fr);gap:22px;align-items:start}.remote-groups{position:sticky;top:18px;display:grid;gap:2px;padding:8px 6px;background:color-mix(in srgb,var(--surface) 55%,transparent);border:1px solid var(--line);border-radius:var(--radius-lg)}.remote-group{display:flex;align-items:center;gap:9px;width:100%;padding:8px 10px;text-align:left;border:1px solid transparent;border-radius:var(--radius-md);background:transparent;color:var(--ink-soft);font-size:var(--text-sm);font-weight:500;transition:background var(--dur-fast) var(--ease),color var(--dur-fast) var(--ease)}.remote-group:hover{background:var(--surface-2);color:var(--ink)}.remote-group.active{background:var(--accent-soft);color:var(--accent);font-weight:600}.remote-group .lucide{flex:none}.remote-list{min-width:0}.remote-toolbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:10px}.remote-group-select{display:none;width:100%}.remote-row{padding:10px 14px;gap:10px}.remote-row-main{display:block;min-width:0;text-align:left;background:none;border:none;padding:2px 0;color:inherit;cursor:pointer}.remote-row-main:hover .title{color:var(--accent)}.remote-row-actions{display:flex;align-items:center;gap:6px;flex:none}.btn.icon-only{padding:5px 7px}.btn.icon-only .lucide{margin:0}.remote-pending{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:0 0 10px;padding:8px 12px;font-size:var(--text-xs);color:var(--ink-soft);background:var(--info-soft);border:1px solid color-mix(in srgb,var(--info) 25%,transparent);border-radius:var(--radius-sm)}.remote-pending .lucide{color:var(--info);flex:none}.remote-invite-new{display:flex;gap:8px;width:100%;max-width:520px}.remote-invite-new .input{flex:1;min-width:0}.remote-invite-row{padding:10px 14px;gap:10px;flex-wrap:wrap}.remote-invite-pill{font-family:var(--font-mono);font-size:var(--text-lg);font-weight:650;letter-spacing:.12em;padding:4px 12px;border-radius:var(--radius-sm);color:var(--ink);background:var(--accent-soft);border:1px solid color-mix(in srgb,var(--accent) 30%,transparent)}.remote-invite-pill.used{color:var(--ink-faint);background:var(--surface-2);border-color:var(--line);text-decoration:line-through}.remote-invite{display:grid;gap:16px;max-width:760px}.remote-invite-hero{display:grid;gap:22px;padding:26px}.remote-invite-url{display:grid;gap:6px;justify-items:start}.remote-invite-url a{font-size:var(--text-2xl);font-weight:700;letter-spacing:-.02em;color:var(--ink);text-decoration:none;border-bottom:2px solid var(--accent)}.remote-invite-url a:hover{color:var(--accent)}.remote-invite-code{display:grid;gap:8px;justify-items:start;padding-top:18px;border-top:1px solid var(--line)}.remote-code{font-size:clamp(2rem,6vw,3.2rem);font-weight:750;letter-spacing:.08em;line-height:1;font-variant-numeric:tabular-nums;color:var(--ink)}.remote-code.faint{color:var(--ink-faint)}.remote-status-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 22px}.remote-status-grid>div{display:grid;gap:4px}@media (max-width: 900px){.remote-hub{grid-template-columns:1fr;gap:12px}.remote-groups{display:none}.remote-group-select{display:block}.remote-row{flex-wrap:wrap}.remote-row-main{flex:1 1 100%;order:1}.remote-row>.dot{order:0}.remote-row-actions{order:2;flex:1 1 100%;justify-content:flex-end;flex-wrap:wrap}.remote-status-grid{grid-template-columns:1fr}}
