:root{--brand: #b2927f;--brand-dark: #8a6d5e;--brand-darker: #6c5447;--bg: #faf6f3;--bg-soft: #f5ede6;--card: #ffffff;--text: #1f2937;--muted: #6b7280;--border: #e8dfd8;--border-strong: #d8cdc3;--error: #b8332f;--error-bg: #fdecea;--success: #2f8f63;--success-bg: #e7f5ee;--shadow-soft: 0 1px 2px rgba(15, 23, 42, .04), 0 1px 8px rgba(15, 23, 42, .03);--shadow-lift: 0 4px 16px rgba(140, 109, 94, .1);--radius: 14px;--radius-sm: 10px;--radius-pill: 999px;--tap: 48px}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;padding:0;background:var(--bg);color:var(--text);font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif;font-size:16px;line-height:1.5;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;-webkit-tap-highlight-color:transparent;overscroll-behavior-y:contain;scroll-behavior:smooth}body{padding-bottom:env(safe-area-inset-bottom)}a{color:var(--brand-dark);text-decoration:none}a:hover{text-decoration:underline}button{font-family:inherit}.portal-shell{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column}.portal-header{padding:.75rem 1.25rem;padding-top:calc(.75rem + env(safe-area-inset-top));display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--border);background:#fff;position:sticky;top:0;z-index:50;backdrop-filter:saturate(180%) blur(8px);-webkit-backdrop-filter:saturate(180%) blur(8px)}.brand-mark{display:flex;flex-direction:column;gap:2px;line-height:1;color:var(--brand-darker)}.brand-mark:hover{text-decoration:none}.brand-mark .logo{font-family:Playfair Display,serif;font-size:1.25rem;font-weight:500;letter-spacing:.01em}.brand-mark .logo-subtitle{font-family:Parisienne,cursive;font-size:.9375rem;color:var(--brand-dark);margin-top:1px}.portal-main{flex:1;padding:1.5rem 1rem 2.5rem;max-width:32rem;width:100%;margin:0 auto}.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:1.75rem 1.5rem;box-shadow:var(--shadow-soft)}.card+.card{margin-top:1.25rem}.title{font-family:Playfair Display,serif;font-size:1.625rem;font-weight:600;line-height:1.2;margin:0 0 .5rem;color:var(--brand-darker)}.subtitle{color:var(--muted);margin:0 0 1.5rem;font-size:.9375rem}.label{display:block;font-size:.875rem;font-weight:600;color:var(--text);margin-bottom:.5rem}.input,.select{width:100%;min-height:var(--tap);padding:.75rem .875rem;font-size:1rem;border-radius:var(--radius-sm);border:1px solid var(--border-strong);background:#fff;color:var(--text);outline:none;transition:border-color .15s,box-shadow .15s;font-family:inherit;-moz-appearance:none;appearance:none;-webkit-appearance:none}.input::-moz-placeholder{color:#b8aea4}.input::placeholder{color:#b8aea4}.input:hover,.select:hover{border-color:var(--brand)}.input:focus,.select:focus{border-color:var(--brand);box-shadow:0 0 0 4px #b2927f33}.code-input{font-family:Inter,system-ui,sans-serif;font-feature-settings:"tnum";font-size:1.625rem;letter-spacing:.5em;text-align:center;padding-left:1rem;padding-right:.5rem;min-height:56px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;min-height:var(--tap);padding:.8125rem 1.25rem;font-size:1rem;font-weight:600;letter-spacing:.005em;border-radius:var(--radius-sm);cursor:pointer;transition:background-color .15s,opacity .15s,transform .05s;border:1px solid transparent;width:100%;-webkit-user-select:none;-moz-user-select:none;user-select:none}.btn:active{transform:translateY(1px)}.btn-primary{background:var(--brand);color:#fff}.btn-primary:hover{background:var(--brand-dark)}.btn-secondary{background:#fff;color:var(--brand-dark);border-color:var(--border-strong)}.btn-secondary:hover{background:var(--bg-soft)}.btn[disabled]{opacity:.55;cursor:not-allowed;transform:none}.field{margin-top:1.5rem}.field:first-child{margin-top:0}.field-actions{margin-top:2rem;display:flex;flex-direction:column;gap:.75rem}.help{font-size:.875rem;color:var(--muted);margin-top:.625rem;line-height:1.4}.error{color:var(--error);background:var(--error-bg);font-size:.875rem;margin-top:1rem;padding:.75rem 1rem;border-radius:var(--radius-sm);line-height:1.4}.success{color:var(--success);font-size:.875rem;margin-top:.75rem}.lang-toggle{display:inline-flex;gap:.125rem;background:var(--bg-soft);padding:.25rem;border-radius:var(--radius-pill)}.lang-toggle a{padding:.375rem .875rem;border-radius:var(--radius-pill);font-size:.8125rem;font-weight:600;color:var(--brand-dark);letter-spacing:.04em;text-transform:uppercase}.lang-toggle a:hover{text-decoration:none}.lang-toggle a.active{background:#fff;color:var(--brand-darker);box-shadow:0 1px 2px #00000014}.balance-card{text-align:center;padding:2.25rem 1.5rem}.balance-number{font-family:Playfair Display,serif;font-size:3.75rem;font-weight:700;color:var(--brand-darker);line-height:1;letter-spacing:-.02em}.balance-label{color:var(--muted);margin-top:.5rem;font-size:.9375rem}.qr-box{background:#fff;padding:1.75rem 1.5rem;border-radius:var(--radius);text-align:center}.qr-img{display:block;margin:0 auto;max-width:220px;width:100%;height:auto;image-rendering:pixelated}.history-row{display:flex;justify-content:space-between;align-items:flex-start;gap:.75rem;padding:.875rem 0;border-bottom:1px solid var(--bg-soft)}.history-row:first-of-type{padding-top:.5rem}.history-row:last-child{border-bottom:0;padding-bottom:0}.history-meta{color:var(--muted);font-size:.8125rem;line-height:1.45;margin-top:2px}.pos{color:var(--success);font-weight:600;white-space:nowrap}.neg{color:var(--error);font-weight:600;white-space:nowrap}.footer-link{text-align:center;margin-top:1.5rem;font-size:.9375rem}.signout-btn{width:auto;min-height:36px;padding:.375rem .875rem;font-size:.8125rem;font-weight:600;border-radius:var(--radius-pill);border:1px solid var(--border-strong);background:#fff;color:var(--brand-dark);cursor:pointer}.signout-btn:hover{background:var(--bg-soft)}@media(max-width:480px){.portal-main{padding:1.25rem 1rem 2rem}.card{padding:1.5rem 1.25rem}.title{font-size:1.5rem}.balance-number{font-size:3.25rem}.brand-mark .logo{font-size:1.125rem}.brand-mark .logo-subtitle{font-size:.875rem}}
