*,*:before,*:after{box-sizing:border-box;-webkit-tap-highlight-color:transparent}:root{color-scheme:light;font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;line-height:1.4;font-weight:400;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{margin:0;min-height:100svh;background:#fff;color:#111827}#root{min-height:100svh}button:focus{outline:none}button:focus-visible{outline:2px solid #16a34a;outline-offset:3px}.app-shell{min-height:100svh;display:grid;place-items:center;padding:16px}.debug-test-menu{position:fixed;top:14px;right:14px;z-index:10;display:flex;flex-direction:row-reverse;align-items:center;gap:8px}.debug-toggle-button{width:34px;height:34px;border:1px solid #bbf7d0;border-radius:50%;background:#f0fdf4;color:#15803d;font:inherit;font-size:.95rem;font-weight:800;cursor:pointer;box-shadow:0 8px 18px #11182714;transition:background .16s ease,border-color .16s ease,transform .16s ease}.debug-toggle-icon{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}.debug-toggle-button:hover{background:#dcfce7;border-color:#86efac;transform:translateY(-1px)}.debug-toggle-button:active{transform:translateY(0)}.debug-test-actions{display:flex;gap:8px;animation:debug-actions-in .18s ease-out both}.debug-test-button{border:1px solid #bbf7d0;border-radius:999px;background:#f0fdf4;color:#15803d;font:inherit;font-size:.78rem;font-weight:700;padding:7px 11px;cursor:pointer;box-shadow:0 8px 18px #11182714;transition:background .16s ease,border-color .16s ease,transform .16s ease}.debug-test-button:hover{background:#dcfce7;border-color:#86efac;transform:translateY(-1px)}.debug-test-button:active{transform:translateY(0)}.debug-test-button:disabled{cursor:not-allowed;opacity:.5;transform:none}.panel{width:min(100%,440px);min-height:610px;position:relative;view-transition-name:qrquest-panel;background:#fff;border:1px solid #e5e7eb;border-radius:24px;padding:20px 16px;text-align:center;box-shadow:0 10px 22px #11182714}::view-transition-group(qrquest-panel){animation-duration:.52s;animation-timing-function:cubic-bezier(.22,1,.36,1)}::view-transition-old(qrquest-panel){animation:panel-view-out .3s cubic-bezier(.55,0,.45,1) both}::view-transition-new(qrquest-panel){animation:panel-view-in .46s cubic-bezier(.22,1,.36,1) 80ms both}.panel-layout{display:grid;grid-template-rows:minmax(0,1fr) auto minmax(0,1fr);align-items:center;row-gap:14px}.panel-mode{animation:panel-mode-in .36s cubic-bezier(.22,1,.36,1) both}.panel-mode .panel-top{animation:panel-region-in .36s cubic-bezier(.22,1,.36,1) 60ms both}.panel-mode .panel-qr-slot{animation:panel-qr-region-in .42s cubic-bezier(.22,1,.36,1) .11s both}.panel-mode .panel-bottom{animation:panel-region-in .36s cubic-bezier(.22,1,.36,1) .17s both}.panel-top{align-self:end}.panel-qr-slot{display:grid;place-items:center}.panel-bottom{align-self:start;min-height:112px}.pairing-wait-status{display:grid;justify-items:center;gap:10px}h1{margin:0;font-size:1.5rem;letter-spacing:.04em}.instruction{margin-top:8px;color:#4b5563;font-size:14px}.qr-wrapper{position:relative;width:min(80vw,320px);aspect-ratio:1;border-radius:18px;display:grid;place-items:center;background:#fff;border:1px solid #e5e7eb;padding:12px;overflow:hidden}.qr-timer-ring{--qr-progress: 100%;--qr-ring-color: #22c55e;width:min(80vw,332px);aspect-ratio:1;margin:0 auto;border-radius:22px;padding:6px;background:conic-gradient(var(--qr-ring-color) var(--qr-progress),#e5e7eb 0);display:grid;place-items:center;transition:background .12s linear}.qr-image{width:100%;height:100%;border-radius:10px}.soft-update{animation:fade-in .18s ease-in-out}.pulse{animation:pulse .3s ease-out}.qr-placeholder{color:#111827;font-weight:600}.countdown{margin:0;color:#4b5563}.countdown strong{color:#111827}.auth-success-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:2;display:grid;place-items:center;border-radius:inherit;background:linear-gradient(145deg,#16a34afc,#15803dfa);animation:auth-overlay-in .52s cubic-bezier(.22,1,.36,1) forwards;overflow:hidden}.auth-success-overlay.is-dismissing{pointer-events:none;animation:auth-overlay-out .32s cubic-bezier(.55,0,.45,1) forwards}.auth-success-overlay.is-dismissing .auth-success-content{animation:auth-content-out .26s cubic-bezier(.55,0,.45,1) forwards}.auth-success-overlay.is-dismissing .auth-success-shimmer{animation:auth-shimmer-out .24s ease forwards}.auth-success-shimmer{position:absolute;top:-40%;right:-40%;bottom:-40%;left:-40%;background:linear-gradient(115deg,transparent 38%,rgba(255,255,255,.22) 50%,transparent 62%);animation:auth-shimmer 2.8s ease-in-out infinite;pointer-events:none}.auth-success-content{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;gap:6px;padding:12px;animation:auth-content-in .64s cubic-bezier(.22,1,.36,1) .12s both}.auth-success-icon{width:72px;height:72px;border-radius:50%;background:#ffffff47;display:grid;place-items:center;box-shadow:0 8px 24px #0000001f}.auth-checkmark-svg{width:52px;height:52px}.auth-checkmark-circle{stroke:#fff;stroke-width:2.5;stroke-dasharray:151;stroke-dashoffset:151;animation:auth-circle-draw .52s cubic-bezier(.65,0,.35,1) .2s forwards}.auth-checkmark-check{stroke:#fff;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:36;stroke-dashoffset:36;animation:auth-check-draw .38s cubic-bezier(.65,0,.35,1) .62s forwards}.auth-success-title{margin:8px 0 0;font-size:1.35rem;font-weight:700;letter-spacing:.02em;color:#fff}.auth-success-subtitle{margin:0;font-size:.9rem;color:#ffffffe6}.auth-success-detail{margin:8px 0 0;font-size:.82rem;font-weight:600;letter-spacing:.02em;color:#fffffff2}.auth-new-qr-button{margin-top:14px;border:1.5px solid rgba(255,255,255,.85);border-radius:999px;background:#ffffff24;color:#fff;font:inherit;font-size:.9rem;font-weight:600;padding:10px 18px;cursor:pointer;transition:background .16s ease,transform .16s ease,opacity .16s ease;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.auth-new-qr-button:hover{background:#ffffff3d;transform:translateY(-1px)}.auth-new-qr-button:active{transform:translateY(0)}.auth-new-qr-button:focus-visible{outline:2px solid #ffffff;outline-offset:2px}.status-message{margin-top:10px;color:#fca5a5;font-size:.95rem}.status-ok{color:#15803d}.pairing-loading-spinner{width:22px;height:22px;border:3px solid #bbf7d0;border-top-color:#22c55e;border-radius:50%;animation:pairing-spinner-spin .85s linear infinite}.status-success{color:#16a34a;font-weight:600}.pair-panel{text-align:center}.pairing-qr-wrapper{position:relative;width:min(80vw,332px);aspect-ratio:1;margin:0 auto;border-radius:22px;display:grid;place-items:center;background:#fff;border:1px solid #d1d5db;padding:12px;overflow:hidden}.pairing-qr-image{width:100%;height:100%;border-radius:10px}.pairing-qr-placeholder{width:100%;height:100%;border-radius:14px;display:grid;place-items:center;background:linear-gradient(90deg,rgba(34,197,94,.04) 1px,transparent 1px),linear-gradient(rgba(34,197,94,.04) 1px,transparent 1px),#f8fafc;background-size:18px 18px;overflow:hidden;animation:pairing-placeholder-in .26s ease-out both}.pairing-qr-pulse{width:58px;height:58px;border-radius:18px;background:#dcfce7;box-shadow:0 0 #22c55e47;animation:pairing-qr-pulse 1.25s ease-in-out infinite}.pair-label{margin:12px 0 0;font-size:1.05rem;color:#111827;text-align:center}.pair-label strong{color:#15803d}.paired-user{margin:10px 0 0;color:#4b5563}.unpair-actions{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;column-gap:10px;margin-top:18px}.unpair-actions>:first-child{grid-column:2}.unpair-actions.is-confirming .unpair-button.is-danger{grid-column:3;justify-self:start}.unpair-button{border-radius:999px;font:inherit;font-size:.95rem;font-weight:600;padding:10px 18px;cursor:pointer;transition:background .16s ease,border-color .16s ease,color .16s ease,transform .16s ease;animation:unpair-button-in .18s ease-out both}.unpair-button{border:1px solid #d1d5db;background:#fff;color:#374151}.unpair-primary-button{display:grid;min-width:88px;place-items:center}.unpair-primary-button.is-cancel{background:#f9fafb;color:#4b5563}.unpair-button-label{grid-area:1 / 1;opacity:0;transform:translateY(4px);transition:opacity .18s ease,transform .18s ease}.unpair-button-label.is-visible{opacity:1;transform:translateY(0)}.unpair-button:hover:not(:disabled){transform:translateY(-1px)}.unpair-button.is-danger{border-color:#ef4444;background:#ef4444;color:#fff}.unpair-button.is-danger:hover:not(:disabled){background:#dc2626;border-color:#dc2626}.unpair-button:disabled{cursor:wait;opacity:.72}.link-button{border:none;background:transparent;color:#16a34a;font:inherit;cursor:pointer;text-decoration:underline;padding:0}code{background:#f3f4f6;border-radius:6px;padding:2px 6px}@keyframes pulse{0%{transform:scale(1)}60%{transform:scale(1.02)}to{transform:scale(1)}}@keyframes fade-in{0%{opacity:.86}to{opacity:1}}@keyframes debug-actions-in{0%{opacity:0;transform:translate(8px) scale(.96)}to{opacity:1;transform:translate(0) scale(1)}}@keyframes panel-mode-in{0%{opacity:0;transform:translateY(10px) scale(.985)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes panel-view-out{0%{opacity:1;transform:translateY(0) scale(1);filter:blur(0)}to{opacity:0;transform:translateY(-8px) scale(.975);filter:blur(2px)}}@keyframes panel-view-in{0%{opacity:0;transform:translateY(12px) scale(.98);filter:blur(2px)}to{opacity:1;transform:translateY(0) scale(1);filter:blur(0)}}@keyframes panel-region-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes panel-qr-region-in{0%{opacity:0;transform:scale(.965)}to{opacity:1;transform:scale(1)}}@keyframes pairing-placeholder-in{0%{opacity:0}to{opacity:1}}@keyframes pairing-qr-pulse{0%,to{transform:scale(.96);box-shadow:0 0 #22c55e3d}50%{transform:scale(1);box-shadow:0 0 0 14px #22c55e00}}@keyframes unpair-button-in{0%{opacity:0;transform:translate(8px) scale(.96)}to{opacity:1;transform:translate(0) scale(1)}}@keyframes pairing-spinner-spin{to{transform:rotate(360deg)}}@keyframes auth-overlay-in{0%{opacity:0;transform:scale(.94)}to{opacity:1;transform:scale(1)}}@keyframes auth-overlay-out{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.97)}}@keyframes auth-content-in{0%{opacity:0;transform:translateY(10px) scale(.92)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes auth-content-out{0%{opacity:1;transform:translateY(0) scale(1)}to{opacity:0;transform:translateY(8px) scale(.96)}}@keyframes auth-circle-draw{to{stroke-dashoffset:0}}@keyframes auth-check-draw{to{stroke-dashoffset:0}}@keyframes auth-shimmer-out{to{opacity:0}}@keyframes auth-shimmer{0%,to{transform:translate(-18%) rotate(0);opacity:.35}50%{transform:translate(18%) rotate(0);opacity:.85}}
