:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-weight:400;line-height:1.5}*{box-sizing:border-box}html,body{width:100%;margin:0;padding:0}body{min-height:100dvh}:root{--bg0:#0a101e;--bg1:#111a2c;--card:#16233a;--card-hi:#1b2b46;--line:#24354f;--text:#edf3fb;--mut:#8ca3c3;--acc:#43de8a;--acc-dim:#43de8a24;--acc-deep:#0b3a24;--warn:#f5c04e;--bad:#f26d6d;--bad-dim:#f26d6d24;--mono:ui-monospace, "SF Mono", SFMono-Regular, Menlo, monospace}body{background:var(--bg0);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,sans-serif}.app-shell{background:var(--bg1);flex-direction:column;width:100%;max-width:520px;height:100dvh;margin:0 auto;display:flex}.app-content{flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}.tabpane{flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden auto}.tabpane.off{display:none}.tabbar{border-top:1px solid var(--line);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);padding:6px 10px calc(10px + env(safe-area-inset-bottom));background:#0a101eeb;flex:none;display:flex}.tab{cursor:pointer;color:var(--mut);font:inherit;letter-spacing:.02em;background:0 0;border:0;border-radius:10px;flex-direction:column;flex:1;align-items:center;gap:3px;padding:6px 0 2px;font-size:10.5px;font-weight:600;display:flex;position:relative}.tab.on{color:var(--acc)}.tab:focus-visible{outline:2px solid var(--acc);outline-offset:-2px}.tab-badge{background:var(--warn);color:#4a3305;border-radius:99px;justify-content:center;align-items:center;min-width:16px;height:16px;padding:0 4px;font-size:.62rem;font-weight:800;display:flex;position:absolute;top:0;left:calc(50% + 6px)}.auth-wrap{background:radial-gradient(600px 420px at 50% 30%, #43de8a12, transparent 70%), var(--bg0);justify-content:center;align-items:center;min-height:100dvh;padding:20px;display:flex}.auth-card{background:var(--card);border:1px solid var(--line);text-align:center;border-radius:22px;width:100%;max-width:400px;padding:2.2rem 1.6rem}.auth-icon{color:var(--acc);justify-content:center;margin-bottom:1rem;display:flex}.title{letter-spacing:-.02em;margin-bottom:.4rem;font-size:1.55rem;font-weight:800}.subtitle{color:var(--mut);margin-bottom:1.8rem;font-size:.9rem;line-height:1.5}.form-group{text-align:left;margin-bottom:1.1rem}label{color:var(--mut);margin-bottom:.45rem;font-size:.8rem;font-weight:600;display:block}input,select{background:var(--bg1);border:1px solid var(--line);width:100%;color:var(--text);font:inherit;-webkit-appearance:none;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;border-radius:12px;padding:.85rem .9rem;font-size:16px;transition:border-color .15s}input::placeholder{color:var(--mut);opacity:.6}input:focus,select:focus{border-color:var(--acc);outline:none;box-shadow:0 0 0 2px #43de8a2e}button{font:inherit;cursor:pointer;border:0;justify-content:center;align-items:center;gap:7px;display:flex}.btn{background:var(--acc);width:100%;color:var(--acc-deep);border-radius:12px;padding:.9rem;font-size:.95rem;font-weight:700;transition:transform .12s,filter .12s}.btn:hover{filter:brightness(1.05)}.btn:active{transform:scale(.98)}.btn:disabled{opacity:.6;cursor:not-allowed;transform:none}.btn.quiet{background:var(--card);color:var(--mut);border:1px solid var(--line)}.btn.quiet:hover{background:var(--card-hi);filter:none}.btn.danger{background:var(--bad-dim);color:var(--bad)}.btn.danger:hover{filter:none;background:#f26d6d3d}button:focus-visible{outline:2px solid var(--acc);outline-offset:2px}.icon-btn{border:1px solid var(--line);width:34px;height:34px;color:var(--mut);background:0 0;border-radius:9px;flex:none;padding:0}.icon-btn:hover{background:var(--card-hi)}.icon-btn.danger{color:var(--bad);border-color:#f26d6d59}.linkbtn{color:var(--bad);background:0 0;padding:0 .25rem;font-size:.72rem;text-decoration:underline;display:inline}.error-msg{color:#fca5a5;background:var(--bad-dim);border-left:3px solid var(--bad);text-align:left;border-radius:10px;margin-top:.9rem;padding:.7rem .85rem;font-size:.85rem}.success-msg{color:var(--acc);align-items:center;gap:6px;margin-top:.9rem;font-size:.88rem;font-weight:600;display:flex}.spin{animation:1s linear infinite spin}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.full-loader{min-height:100dvh;color:var(--acc);justify-content:center;align-items:center;display:flex}.door-page{background:radial-gradient(420px 340px at 50% 40%,#43de8a17,#0000 70%);flex-direction:column;flex:1;justify-content:space-between;align-items:center;padding:28px 22px 20px;display:flex}.greet{text-align:center}.greet .hello{letter-spacing:-.02em;font-size:1.5rem;font-weight:800}.greet .sub{color:var(--mut);margin-top:4px;font-size:.82rem}.door-zone{flex-direction:column;align-items:center;gap:16px;display:flex}.holdwrap{width:208px;height:208px;position:relative}.holdwrap .ring{pointer-events:none;position:absolute;inset:0;transform:rotate(-90deg)}.ring .track{stroke:#ffffff12}.ring .fill{stroke:var(--acc);stroke-dasharray:604;stroke-dashoffset:604px;stroke-linecap:round}.holdwrap.holding .ring .fill{stroke-dashoffset:0;transition:stroke-dashoffset .7s linear}.holdwrap.idle .ring .fill,.holdwrap.error .ring .fill{transition:stroke-dashoffset .25s}.door-btn{color:var(--acc-deep);letter-spacing:.08em;text-transform:uppercase;-webkit-user-select:none;user-select:none;touch-action:none;background:linear-gradient(160deg,#4ce896 0%,#21b96a 100%);border-radius:50%;flex-direction:column;gap:8px;font-size:.8rem;font-weight:800;transition:transform .15s;position:absolute;inset:14px;box-shadow:0 0 44px #43de8a47,inset 0 2px 6px #ffffff59,inset 0 -10px 24px #003c1e40}.door-btn:active{transform:scale(.96)}.door-btn:focus-visible{outline:3px solid var(--text);outline-offset:3px}.holdwrap.idle .door-btn{animation:3.2s ease-in-out infinite breathe}@keyframes breathe{0%,to{box-shadow:0 0 34px #43de8a33,inset 0 2px 6px #ffffff59,inset 0 -10px 24px #003c1e40}50%{box-shadow:0 0 58px #43de8a6b,inset 0 2px 6px #ffffff59,inset 0 -10px 24px #003c1e40}}.holdwrap.success .door-btn{background:linear-gradient(160deg,#5df0a4 0%,#2ecb78 100%)}.holdwrap.success:after{content:"";border:2px solid var(--acc);border-radius:50%;animation:.9s ease-out forwards pulse-out;position:absolute;inset:4px}@keyframes pulse-out{0%{opacity:.9;transform:scale(.9)}to{opacity:0;transform:scale(1.35)}}.holdwrap.error .door-btn{color:#4a0e0e;background:linear-gradient(160deg,#f28b8b 0%,#d84f4f 100%)}.door-status{min-height:22px;color:var(--mut);text-align:center;font-size:.85rem;font-weight:600}.door-status.ok{color:var(--acc)}.door-status.err{color:var(--bad)}.door-foot{flex-direction:column;gap:10px;width:100%;display:flex}.ambient{color:var(--mut);border:1px solid var(--line);background:#ffffff08;border-radius:12px;align-items:center;gap:10px;padding:10px 14px;font-size:.8rem;display:flex}.ambient strong{color:var(--text);font-weight:600}.ambient .dot{background:var(--acc);border-radius:50%;flex:none;width:7px;height:7px}.ambient .dot.bad{background:var(--bad)}.pin-chip{border:1px solid var(--line);color:var(--mut);text-align:left;background:#ffffff08;border-radius:12px;justify-content:space-between;align-items:center;gap:10px;width:100%;padding:10px 14px;font-size:.8rem;display:flex}.pin-chip .val{font-family:var(--mono);letter-spacing:.35em;color:var(--text);font-size:.95rem}.pin-chip .val.masked{letter-spacing:.2em;color:var(--mut)}.pin-chip .tap{text-transform:uppercase;letter-spacing:.08em;font-size:.66rem}.page-head{padding:22px 22px 4px}.page-head h2{letter-spacing:-.02em;margin:0;font-size:1.35rem;font-weight:800}.page-head p{color:var(--mut);margin:5px 0 0;font-size:.8rem;line-height:1.45}.page-body{padding:14px 16px calc(20px + env(safe-area-inset-bottom));flex-direction:column;gap:14px;display:flex}.group-label{letter-spacing:.12em;text-transform:uppercase;color:var(--mut);padding:4px 6px 8px;font-size:.7rem;font-weight:700}.list{background:var(--card);border:1px solid var(--line);border-radius:16px;overflow:hidden}.item{align-items:center;gap:12px;padding:12px 14px;display:flex}.item+.item,.item+.item-extra,.item-extra+.item{border-top:1px solid var(--line)}.avatar{background:var(--card-hi);width:36px;height:36px;color:var(--mut);border-radius:50%;flex:none;justify-content:center;align-items:center;font-size:.8rem;font-weight:700;display:flex}.avatar.me{background:var(--acc-dim);color:var(--acc)}.avatar.bad{background:var(--bad-dim);color:var(--bad)}.item-main{flex:1;min-width:0}.item-title{word-break:break-word;flex-wrap:wrap;align-items:center;gap:7px;font-size:.88rem;font-weight:600;display:flex}.item-sub{color:var(--mut);word-break:break-word;margin-top:2px;font-size:.72rem}.item-side{color:var(--mut);font-variant-numeric:tabular-nums;flex:none;font-size:.72rem}.item-extra{background:#0a101e66;flex-direction:column;gap:10px;padding:12px 14px;display:flex}.control-row{color:var(--mut);flex-wrap:wrap;align-items:center;gap:8px;font-size:.75rem;display:flex}.control-row select,.control-row input{border-radius:8px;width:auto;padding:.35rem .55rem;font-size:.8rem}.badge{text-transform:uppercase;letter-spacing:.05em;border-radius:99px;padding:2px 8px;font-size:.62rem;font-weight:700}.badge.ok,.badge.owner,.badge.active{background:var(--acc-dim);color:var(--acc)}.badge.info,.badge.admin{color:#93c5fd;background:#60a5fa29}.badge.plain,.badge.member{color:var(--mut);background:#8ca3c324}.badge.warn,.badge.invited{color:var(--warn);background:#f5c04e24}.badge.bad,.badge.disabled{background:var(--bad-dim);color:var(--bad)}.inline-form{gap:8px;display:flex}.inline-form input{flex:1;min-width:0}.inline-form .btn{white-space:nowrap;width:auto;padding:.85rem 1.1rem;font-size:.85rem}.token-reveal{text-align:left;background:#43de8a14;border:1px solid #43de8a4d;border-radius:12px;padding:.85rem}.token-code{font-family:var(--mono);word-break:break-all;color:var(--acc);margin:.5rem 0;font-size:.78rem;display:block}.hint{color:var(--mut);font-size:.74rem;line-height:1.45}.empty{color:var(--mut);padding:.9rem 1rem;font-size:.8rem}.modal-backdrop{z-index:50;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#04081099;justify-content:center;align-items:center;padding:24px;animation:.15s fade-in;display:flex;position:fixed;inset:0}.modal-card{background:var(--card);border:1px solid var(--line);text-align:center;border-radius:18px;width:100%;max-width:360px;padding:1.5rem 1.4rem;animation:.18s pop-in}.modal-icon{color:var(--warn);justify-content:center;margin-bottom:.7rem;display:flex}.modal-title{margin-bottom:.45rem;font-size:1.05rem;font-weight:800}.modal-message{color:var(--mut);margin-bottom:1.2rem;font-size:.84rem;line-height:1.5}.modal-actions{gap:10px;display:flex}.modal-actions .btn{flex:1;padding:.75rem;font-size:.85rem}@keyframes fade-in{0%{opacity:0}}@keyframes pop-in{0%{opacity:0;transform:scale(.94)}}.rail-brand{display:none}@media (width>=768px){.app-shell{border-left:1px solid var(--line);border-right:1px solid var(--line);flex-direction:row-reverse;max-width:1060px}.tabbar{border-top:0;border-right:1px solid var(--line);flex-direction:column;justify-content:flex-start;gap:4px;width:210px;padding:18px 12px}.rail-brand{letter-spacing:-.01em;color:var(--text);align-items:center;gap:10px;padding:10px 14px 22px;font-size:1rem;font-weight:800;display:flex}.rail-brand svg{color:var(--acc)}.tab{border-radius:11px;flex-direction:row;flex:none;justify-content:flex-start;gap:12px;padding:11px 14px;font-size:.88rem}.tab.on{background:var(--acc-dim)}.tab:hover:not(.on){background:var(--card-hi);color:var(--text)}.tab-badge{margin-left:auto;position:static}.page-head,.page-body{width:100%;max-width:640px;margin:0 auto}.page-head{padding:30px 28px 4px}.page-body{padding:16px 28px 40px}.door-page{justify-content:center;gap:44px}.door-foot{max-width:460px}.greet .hello{font-size:1.7rem}}@media (width>=768px) and (width<=900px){.tabbar{width:68px;padding:18px 10px}.rail-brand{justify-content:center;padding:10px 0 22px}.rail-brand span{display:none}.tab{justify-content:center;padding:11px 0}.tab .tab-label{display:none}.tab-badge{margin:0;position:absolute;top:4px;right:4px}}@media (prefers-reduced-motion:reduce){.holdwrap.idle .door-btn{animation:none}.holdwrap.success:after{opacity:0;animation:none}.spin{animation-duration:2s}.modal-backdrop,.modal-card{animation:none}}
