:root{color-scheme:dark;font-family:Inter,system-ui,-apple-system,Segoe UI,sans-serif;background:#0a0d13;color:#e7eaf1;font-synthesis:none;--bg: #0a0d13;--surface: #121722;--surface2: #1a2130;--line: #232c3d;--line2: #2e394d;--ink: #e7eaf1;--muted: #8a93a6;--faint: #5c6577;--brand: #7c6cff;--brand-soft: #a99dff;--coin: #f7b955;--like: #ff5c8a;--live: #34d399;--danger: #f8717a}*{box-sizing:border-box}html,body,#root{min-height:100%}body{margin:0;background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased;overscroll-behavior-y:none}body.locked{overflow:hidden}button,input,select,textarea{font:inherit}button{color:inherit;cursor:pointer}button:disabled{opacity:.45;pointer-events:none}.tnum{font-variant-numeric:tabular-nums}.muted{color:var(--muted)}.faint{color:var(--faint)}.brand{color:var(--brand-soft)}.coin{color:var(--coin)}.like{color:var(--like)}.danger{color:var(--danger)}.spin{animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@keyframes fade-up{0%{opacity:0;transform:translateY(6px)}}@keyframes sheet-in{0%{transform:translateY(100%)}}@keyframes setup-scan{0%{transform:translate(-110%)}to{transform:translate(360%)}}@keyframes setup-tile{50%{border-color:#7c6cffb3;color:var(--brand-soft);transform:translateY(-2px)}}@keyframes setup-glow{50%{opacity:.55;transform:scale(1.08)}}.loading-screen{min-height:100vh;display:grid;place-items:center}.login-page{min-height:100vh;display:grid;place-items:center;padding:32px 24px}.login-form{width:min(100%,384px);animation:fade-up .22s ease-out}.login-brand{display:flex;flex-direction:column;align-items:center;gap:12px;margin-bottom:32px;text-align:center}.login-mark{display:grid;place-items:center;padding:14px;border-radius:16px;color:var(--brand-soft);background:#7c6cff26}.login-brand h1{font-size:1.25rem;margin:0}.login-brand p{color:var(--muted);font-size:.875rem;margin:4px 0 0}.login-fields{display:grid;gap:12px}.first-run-page{position:relative;min-height:100vh;display:grid;place-items:center;overflow:hidden;padding:32px 20px;background:radial-gradient(circle at 50% 35%,rgba(124,108,255,.1),transparent 42%)}.first-run-page:before{content:"";position:absolute;width:320px;height:320px;border-radius:50%;background:#7c6cff0f;filter:blur(70px);animation:setup-glow 4s ease-in-out infinite}.first-run-card{position:relative;width:min(100%,430px);padding:24px;border:1px solid var(--line);border-radius:22px;background:#121722eb;box-shadow:0 24px 70px #0000006b;animation:fade-up .35s ease-out}.first-run-brand{display:flex;align-items:center;gap:13px}.first-run-brand .login-mark{padding:11px;border-radius:13px}.first-run-brand span:not(.login-mark){display:block;color:var(--faint);font-size:.65rem;font-weight:700;letter-spacing:.12em}.first-run-brand h1{margin:3px 0 0;font-size:1.15rem}.setup-preview{margin:24px 0 20px;padding:14px;border:1px solid var(--line);border-radius:16px;background:#0a0d13a6}.setup-preview-top{display:flex;gap:5px;padding-bottom:12px;border-bottom:1px solid var(--line)}.setup-preview-top i{width:6px;height:6px;border-radius:50%;background:var(--line2)}.setup-preview-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:12px}.setup-preview-grid span{height:54px;display:grid;place-items:center;border:1px solid var(--line);border-radius:10px;color:var(--faint);background:var(--surface);animation:setup-tile 2.4s ease-in-out infinite}.setup-preview-grid span:nth-child(2){animation-delay:.4s}.setup-preview-grid span:nth-child(3){animation-delay:.8s}.setup-preview-lines{display:grid;gap:7px;margin-top:12px}.setup-preview-lines i{display:block;height:6px;border-radius:999px;background:var(--line)}.setup-preview-lines i:nth-child(1){width:86%}.setup-preview-lines i:nth-child(2){width:64%}.setup-preview-lines i:nth-child(3){width:74%}.setup-progress{height:5px;overflow:hidden;border-radius:999px;background:var(--line)}.setup-progress span{display:block;width:30%;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--brand),var(--brand-soft));animation:setup-scan 1.8s ease-in-out infinite}.setup-message{margin:14px 0 0;color:var(--muted);font-size:.85rem;animation:fade-up .25s ease-out}.first-run-card>.hint{margin-top:5px}.app{min-height:100vh;display:flex;flex-direction:column}.topbar{position:sticky;top:0;z-index:30;border-bottom:1px solid var(--line);background:#0a0d13e0;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);padding-top:env(safe-area-inset-top)}.topbar-inner{width:min(100%,672px);margin:auto;padding:12px 16px 10px}.top-row{display:flex;align-items:center;gap:12px}.switcher{min-width:0;flex:1}.switcher>button{border:0;background:transparent;padding:0;display:flex;align-items:center;gap:6px;max-width:100%}.switcher strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.stats-row{display:flex;align-items:center;gap:8px;margin-top:10px}.status-label{display:flex;align-items:center;gap:6px;color:var(--muted);font-size:.75rem}.mod-status{white-space:nowrap}.mod-status.connected{color:var(--live)}.topbar-inner>.mod-status{margin-top:10px}.stats-spacer{flex:1}.mini-stat{display:flex;align-items:center;gap:6px;padding:4px 10px;border-radius:8px;background:#1a2130b3;font-size:.875rem;font-weight:600}.status-dot{display:inline-block;width:10px;height:10px;border-radius:50%;background:var(--faint);flex:0 0 auto}.status-dot.connected{background:var(--live);box-shadow:0 0 8px #34d39999}.status-dot.connecting{background:var(--coin);animation:pulse 1.4s ease-in-out infinite}@keyframes pulse{50%{opacity:.45}}.content{flex:1;width:min(100%,672px);margin:auto;padding:16px 16px 112px}.bottom-nav{position:fixed;z-index:30;inset:auto 0 0;border-top:1px solid var(--line);background:#121722f5;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);padding-bottom:env(safe-area-inset-bottom)}.bottom-nav-inner{width:min(100%,672px);margin:auto;display:grid}.nav-item{display:flex;flex-direction:column;align-items:center;gap:4px;padding:10px 4px;color:var(--faint);text-decoration:none;font-size:.7rem;font-weight:500}.nav-item.active{color:var(--brand-soft)}.page{display:grid;gap:16px;animation:fade-up .2s ease-out}.page-title{margin:0;display:flex;align-items:center;gap:8px;font-size:1rem;font-weight:600}.page-title svg{color:var(--brand-soft)}.card{border:1px solid var(--line);border-radius:16px;background:var(--surface);box-shadow:0 1px 2px #00000059}.card-pad{padding:14px}.stack{display:grid;gap:12px}.row{display:flex;align-items:center;gap:10px}.spread{justify-content:space-between}.grow{flex:1;min-width:0}.grid-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.grid-3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.divider-list>*+*{border-top:1px solid var(--line)}.section-label{color:var(--muted);font-size:.75rem;margin:0 2px 6px}.section-head{display:flex;align-items:center;gap:10px}.icon-tile{display:grid;place-items:center;flex:0 0 auto;padding:8px;border-radius:12px;background:#7c6cff1f;color:var(--brand-soft)}.icon-tile.coin{background:#f7b9551f;color:var(--coin)}.icon-tile.like{background:#ff5c8a1f;color:var(--like)}.icon-tile.danger{background:#f8717a1f;color:var(--danger)}.section-head h2{margin:0;font-size:.875rem;font-weight:500}.section-head p{margin:2px 0 0;color:var(--muted);font-size:.75rem}.field,.search{width:100%;border:1px solid var(--line);border-radius:12px;background:var(--surface2);color:var(--ink);padding:10px 12px;font-size:1rem;outline:none}.field:focus,.search:focus-within{border-color:#7c6cffb3;box-shadow:0 0 0 2px #7c6cff40}textarea.field{min-height:220px;resize:vertical;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:.8rem;line-height:1.5}.field-wrap{display:block}.label{display:block;color:var(--muted);font-size:.75rem;font-weight:500;margin-bottom:6px}.hint{display:block;color:var(--faint);font-size:.75rem;margin-top:6px;line-height:1.4}.search{display:flex;align-items:center;gap:8px;padding:0 12px}.search input{flex:1;min-width:0;padding:10px 0;border:0;outline:0;color:var(--ink);background:transparent}.picker-value{display:flex;justify-content:space-between;align-items:center;text-align:left}.picker-value small{color:var(--faint);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-left:8px}.btn{min-height:44px;display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:0 16px;border:1px solid var(--line);border-radius:12px;background:var(--surface2);color:var(--ink);font-size:.875rem;font-weight:500;transition:filter .15s,transform .1s}.btn:active{transform:scale(.98)}.btn-primary{border-color:var(--brand);background:var(--brand);color:#fff}.btn-danger{border-color:#f8717a66;background:#f8717a26;color:var(--danger)}.btn-ghost{border-color:transparent;background:transparent}.btn-small{min-height:36px;padding:0 12px;font-size:.75rem}.btn-wide{width:100%}.icon-button{display:grid;place-items:center;border:0;border-radius:8px;background:transparent;padding:8px;color:var(--muted)}.segmented{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:4px;padding:4px;border:1px solid var(--line);border-radius:12px;background:var(--surface2);overflow-x:auto}.segmented button{min-width:max-content;border:0;border-radius:8px;background:transparent;color:var(--muted);padding:8px 10px;font-size:.8rem;font-weight:500}.segmented button.active{background:var(--brand);color:#fff;box-shadow:0 1px 2px #00000059}.toggle-wrap{border:0;background:transparent;padding:0;display:inline-flex;align-items:center;gap:10px}.toggle{position:relative;display:inline-block;width:44px;height:24px;border-radius:999px;background:var(--line2);transition:background .15s}.toggle>span{position:absolute;top:2px;left:2px;width:20px;height:20px;border-radius:50%;background:#fff;transition:transform .15s}.toggle.on{background:var(--brand)}.toggle.on>span{transform:translate(20px)}.stepper{display:flex;min-height:44px;border:1px solid var(--line);border-radius:12px;background:var(--surface2);overflow:hidden}.stepper button{width:44px;border:0;background:transparent;color:var(--muted);display:grid;place-items:center}.stepper input{width:100%;min-width:0;border:0;border-left:1px solid var(--line);border-right:1px solid var(--line);outline:0;text-align:center;background:transparent;color:var(--ink);font-variant-numeric:tabular-nums}.chip{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);border-radius:999px;background:var(--surface2);color:var(--muted);padding:4px 10px;font-size:.75rem}.chip.live{color:var(--live);border-color:#34d3994d;background:#34d3991a}.chip.off{color:var(--danger);border-color:#f8717a4d}.avatar{flex:0 0 auto;display:inline-grid;place-items:center;border-radius:50%;font-size:.85rem;font-weight:600}.empty{min-height:220px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:12px;padding:30px}.empty-icon{display:grid;place-items:center;padding:14px;border-radius:16px;background:var(--surface2);color:var(--faint)}.empty p{margin:0;max-width:270px;color:var(--muted);font-size:.875rem}.metric{display:flex;flex-direction:column;gap:4px;padding:10px 12px}.metric small{display:flex;align-items:center;gap:6px;color:var(--muted);font-size:.75rem}.metric strong{font-size:1.125rem}.chat-layout{display:flex;flex-direction:column;height:calc(100dvh - 202px);min-height:430px}.chat-head{margin-bottom:8px}.chat-box{flex:1;min-height:0;overflow-y:auto;border:1px solid var(--line);border-radius:16px;background:#121722a6;padding:12px}.chat-row{display:flex;align-items:flex-start;gap:10px;padding:6px 2px;animation:fade-up .2s ease-out}.chat-row .meta{display:flex;align-items:baseline;gap:8px}.chat-row strong{color:var(--muted);font-size:.75rem}.chat-row time{color:var(--faint);font-size:.75rem}.chat-row p{margin:3px 0 0;font-size:.875rem;line-height:1.4;overflow-wrap:anywhere}.interaction-strip{flex:0 0 auto;max-height:150px;overflow:auto;margin-top:8px;border:1px solid var(--line);border-radius:16px;background:#121722a6;padding:8px 12px}.event-row{display:flex;align-items:center;gap:8px;min-height:34px;font-size:.78rem}.event-row .event-user{color:var(--ink);font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:42%}.event-row .event-detail{flex:1;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.event-row time{color:var(--faint)}.sheet-layer{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;display:flex;align-items:flex-end;justify-content:center}.sheet-backdrop{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;border:0;background:#0000009e;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.sheet{position:relative;width:min(100%,512px);max-height:90vh;display:flex;flex-direction:column;border:1px solid var(--line);border-radius:16px 16px 0 0;background:var(--surface);box-shadow:0 12px 32px -8px #000000a6;animation:sheet-in .26s cubic-bezier(.32,.72,0,1);padding-bottom:env(safe-area-inset-bottom)}.sheet>header{flex:0 0 auto;display:flex;align-items:center;justify-content:space-between;padding:14px 16px 12px;border-bottom:1px solid var(--line)}.sheet h2{margin:0;font-size:1rem}.sheet-content{flex:1;overflow-y:auto;padding:16px}.sheet>footer{flex:0 0 auto;padding:12px 16px;border-top:1px solid var(--line)}.picker-list{display:grid;gap:2px;margin-top:10px}.picker-row{width:100%;display:flex;align-items:center;gap:12px;border:0;border-radius:12px;padding:9px 8px;background:transparent;text-align:left}.picker-row.selected,.picker-row:active{background:#7c6cff1a}.picker-row>span:nth-child(2){flex:1;min-width:0}.picker-row strong,.picker-row small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.picker-row strong{font-size:.875rem}.picker-row small{color:var(--faint);font-size:.72rem;margin-top:2px}.picker-row em{color:var(--danger);font-size:.7rem;font-style:normal}.gift-thumb{flex:0 0 auto;display:grid;place-items:center;overflow:hidden;border:1px solid var(--line);border-radius:10px;background:radial-gradient(circle at 35% 25%,#7c6cff29,#1a2130cc);color:var(--faint)}.gift-thumb img{width:100%;height:100%;object-fit:contain}.gift-picker-value{height:auto;min-height:52px;display:flex;align-items:center;gap:10px;text-align:left}.gift-picker-copy{flex:1;min-width:0}.gift-picker-copy strong,.gift-picker-copy small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gift-picker-copy small{margin-top:2px;color:var(--faint);font-size:.72rem}.gift-picker-row>span:nth-child(2),.gift-config-row>span:nth-child(2){flex:1;min-width:0}.gift-picker-row>b{flex:0 0 auto;color:var(--coin);font-size:.72rem;font-weight:600}.picker-result-count{margin:9px 2px 0;color:var(--faint);font-size:.7rem}.gift-picker-empty{padding:28px 8px;text-align:center;font-size:.82rem}.gift-config-row .registry-mark{margin-left:auto}.registry-mark{width:9px;height:9px;flex:0 0 auto;border-radius:50%;background:var(--faint)}.registry-mark.enabled{background:var(--live)}.section-card{display:flex;align-items:center;gap:12px;padding:14px}.section-card>button:first-of-type{flex:1;min-width:0;border:0;background:transparent;padding:0;text-align:left}.section-card h3{margin:0;font-size:.875rem;font-weight:500}.section-card p{margin:3px 0 0;color:var(--muted);font-size:.75rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.action-box{display:grid;gap:12px;padding:12px;border:1px solid var(--line);border-radius:12px;background:#1a213066}.entry-list{display:grid;gap:12px}.entry-toolbar{display:flex;justify-content:space-between;align-items:center}.sticky-save{position:fixed;z-index:25;left:16px;right:16px;bottom:calc(68px + env(safe-area-inset-bottom));margin:auto;max-width:640px;box-shadow:0 12px 32px -8px #000000a6}.info-box{display:flex;align-items:flex-start;gap:8px;padding:10px;border-radius:12px;background:var(--surface2);color:var(--muted);font-size:.75rem;line-height:1.45}.device-row,.history-card{width:100%;border:1px solid var(--line);border-radius:16px;background:var(--surface);padding:14px;text-align:left}.device-row .meta,.history-card .meta{margin-top:4px;color:var(--muted);font-size:.75rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.device-groups{display:grid;gap:24px}.device-group-title{margin:0;color:var(--muted);font-size:.8rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em}.device-group-empty{padding:16px;border:1px dashed var(--line);border-radius:14px;color:var(--faint);font-size:.8rem;text-align:center}.access-log-detail{padding:12px 2px}.access-log-message{margin:5px 0;color:var(--ink);font-size:.8rem;overflow-wrap:anywhere}.registry-row{display:flex;align-items:center;gap:12px;padding:9px 4px}.registry-row .entity{flex:1;min-width:0}.registry-row strong,.registry-row small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.registry-row strong{font-size:.875rem}.registry-row small{color:var(--faint);font-size:.72rem;margin-top:2px}.verification{color:var(--coin);font-size:.7rem}.verification.tested{color:var(--live)}.history-metrics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px 12px;margin-top:10px}.history-metrics span{display:flex;align-items:center;gap:5px;font-size:.72rem;color:var(--faint)}.history-metrics b{color:var(--ink);font-size:.82rem}.command-row{padding:10px 2px}.command-row strong{font-size:.85rem}.command-row p{margin:3px 0 0;color:var(--muted);font-size:.75rem}.toast{position:fixed;z-index:90;left:50%;bottom:calc(86px + env(safe-area-inset-bottom));transform:translate(-50%);max-width:min(90vw,420px);border:1px solid rgba(52,211,153,.35);border-radius:12px;background:#13241f;color:#baf5df;padding:10px 14px;box-shadow:0 12px 32px #00000080;font-size:.85rem}.toast.error{border-color:#f8717a66;background:#2b171c;color:#ffc3c8}.error-text{color:var(--danger);font-size:.85rem}@media (min-width: 640px){.sheet-layer{align-items:center}.sheet{border-radius:16px}}@media (max-width: 460px){.mini-stat{padding:4px 7px}.mini-stat svg{width:13px}.nav-item{font-size:.65rem}.grid-3{gap:7px}}@media (hover: hover){.btn:hover,.icon-button:hover,.picker-row:hover,.device-row:hover,.history-card:hover{filter:brightness(1.12)}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.001ms!important;transition-duration:.001ms!important}}
