.floating-hearts{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden;pointer-events:none}.floating-hearts span{position:absolute;bottom:-60px;opacity:0;animation-name:heart-float;animation-timing-function:linear;animation-iteration-count:infinite;will-change:transform,opacity}@keyframes heart-float{0%{transform:translate(0) rotate(-10deg);opacity:0}10%{opacity:.55}50%{transform:translate(20px,-50vh) rotate(10deg)}90%{opacity:.4}to{transform:translate(-10px,-110vh) rotate(-10deg);opacity:0}}.login{position:relative;height:100%;display:flex;align-items:center;justify-content:center;padding:calc(var(--safe-top) + 24px) calc(var(--gutter) + var(--safe-right)) calc(var(--safe-bottom) + 24px) calc(var(--gutter) + var(--safe-left));overflow:hidden;background:radial-gradient(circle at 50% 0%,#ffd6e6 0%,var(--color-bg) 60%)}.login-card{position:relative;width:100%;max-width:380px;display:flex;flex-direction:column;gap:16px;padding:32px 24px;border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);text-align:center}.login-card .field{text-align:left}.login-heart{font-size:48px;line-height:1}.login-card h1{font-size:34px}.login-subtitle{color:var(--color-text-soft);margin-top:-10px;margin-bottom:4px}.login-error{color:var(--color-danger);font-size:15px}.tabbar{flex-shrink:0;display:flex;justify-content:space-around;gap:4px;height:calc(var(--tabbar-height) + var(--safe-bottom));padding:6px calc(8px + var(--safe-right)) var(--safe-bottom) calc(8px + var(--safe-left));background:#ffffffeb;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border-top:1px solid var(--color-border);box-shadow:0 -4px 20px #d81b600f;z-index:10}.tab{position:relative;flex:1;max-width:96px;min-height:var(--touch);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;border-radius:var(--radius-sm);color:var(--color-text-soft);text-decoration:none;transition:color .2s}.tab.active{color:var(--color-accent)}.tab-pill{position:absolute;top:2px;right:6px;bottom:2px;left:6px;border-radius:var(--radius-sm);background:var(--color-primary-soft);z-index:-1}.tab-icon{display:flex}.tab-label{font-size:11px;font-weight:700;letter-spacing:.2px}.shell{height:100%;display:flex;flex-direction:column}.status-band{flex-shrink:0;height:var(--safe-top);background:linear-gradient(90deg,var(--color-primary),#ec6c9c)}.shell-main{position:relative;flex:1;min-height:0;overflow:hidden}.page{position:absolute;top:0;right:0;bottom:0;left:0;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;padding:20px calc(var(--gutter) + var(--safe-right)) 32px calc(var(--gutter) + var(--safe-left))}.page-inner{max-width:560px;margin:0 auto;display:flex;flex-direction:column;gap:16px}@font-face{font-family:Pacifico;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/pacifico-latin-400-normal-4dwv_g8l.woff2) format("woff2"),url(/assets/pacifico-latin-400-normal-CKlM6VMs.woff) format("woff")}@font-face{font-family:Nunito;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/nunito-latin-400-normal-CA33qtOw.woff2) format("woff2"),url(/assets/nunito-latin-400-normal-nExtXIcZ.woff) format("woff")}@font-face{font-family:Nunito;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/nunito-latin-600-normal-BupoeBnc.woff2) format("woff2"),url(/assets/nunito-latin-600-normal-BIldxhQs.woff) format("woff")}@font-face{font-family:Nunito;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/nunito-latin-700-normal-CGDVIs8t.woff2) format("woff2"),url(/assets/nunito-latin-700-normal-C5gyHyFo.woff) format("woff")}@font-face{font-family:Nunito;font-style:normal;font-display:swap;font-weight:800;src:url(/assets/nunito-latin-800-normal-BQmuGLSm.woff2) format("woff2"),url(/assets/nunito-latin-800-normal-DGg9yqR-.woff) format("woff")}:root{color-scheme:light;--color-bg: #fff0f5;--color-primary: #f48fb1;--color-primary-soft: #fce4ec;--color-accent: #d81b60;--color-card: #ffffff;--color-text: #5d4e52;--color-text-soft: #9a878c;--color-border: #f8d7e3;--color-danger: #c62828;--font-title: "Pacifico", "Brush Script MT", cursive;--font-body: "Nunito", system-ui, -apple-system, "Segoe UI", sans-serif;--radius-sm: 12px;--radius: 20px;--radius-lg: 28px;--radius-pill: 999px;--shadow-sm: 0 2px 8px rgba(216, 27, 96, .08);--shadow: 0 8px 24px rgba(216, 27, 96, .12);--shadow-lg: 0 16px 40px rgba(216, 27, 96, .18);--tabbar-height: 64px;--touch: 48px;--gutter: 16px;--safe-top: env(safe-area-inset-top, 0px);--safe-bottom: env(safe-area-inset-bottom, 0px);--safe-left: env(safe-area-inset-left, 0px);--safe-right: env(safe-area-inset-right, 0px);--ease: cubic-bezier(.22, 1, .36, 1)}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;height:100%;background:var(--color-bg);overscroll-behavior:none}body{font-family:var(--font-body);font-size:16px;line-height:1.5;color:var(--color-text);-webkit-font-smoothing:antialiased;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent;touch-action:manipulation;overflow:hidden}#root{height:100%}h1,h2,h3{font-family:var(--font-title);font-weight:400;color:var(--color-accent);margin:0;line-height:1.3}p{margin:0}input,textarea,select,button{font:inherit;font-size:16px;color:inherit}button{cursor:pointer;-webkit-user-select:none;user-select:none}img{max-width:100%;display:block}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}.card{background:var(--color-card);border-radius:var(--radius);box-shadow:var(--shadow-sm);padding:20px}.btn{min-height:var(--touch);padding:0 24px;border:none;border-radius:var(--radius-pill);background:linear-gradient(135deg,var(--color-primary),var(--color-accent));color:#fff;font-weight:700;box-shadow:var(--shadow);display:inline-flex;align-items:center;justify-content:center;gap:8px;transition:transform .15s var(--ease),opacity .15s}.btn:active{transform:scale(.96)}.btn:disabled{opacity:.6}.btn-ghost{background:var(--color-primary-soft);color:var(--color-accent);box-shadow:none}.field{display:flex;flex-direction:column;gap:6px}.field label{font-size:14px;font-weight:700;color:var(--color-text-soft);padding-left:4px}.input{min-height:var(--touch);padding:12px 16px;border:2px solid var(--color-border);border-radius:var(--radius-sm);background:#fff;outline:none;transition:border-color .2s;width:100%}.input:focus{border-color:var(--color-primary)}
