@import url("https://fonts.googleapis.com/css2?family=Fraunces:opsz,ital,wght@9..144,0,400;9..144,0,500;9..144,0,600;9..144,1,400&family=DM+Sans:wght@400;500;600&family=DM+Mono:wght@400;500&display=swap");:root{--accent:#1f6b4f;--accent-deep:#184f3b;--accent-mid:#2d8464;--accent-soft:#e8f0ea;--accent-tint:#f0f5f1;--paper:#f6f1e7;--card:#fffdf8;--card-raised:#ffffff;--line:#e4dccb;--line-strong:#cdbfa6;--ink:#1d1a16;--ink-soft:#5c554a;--ink-faint:#9c8e80;--terra:#c97b3c;--terra-soft:#fbeede;--terra-deep:#a45e22;--danger:#a4361f;--danger-soft:#f6e1da;--status-transferred-bg:var(--accent-soft);--status-transferred:var(--accent);--status-held-bg:var(--terra-soft);--status-held:var(--terra);--status-pending-bg:#fef3e2;--status-pending:#9a6200;--status-refunded-bg:var(--danger-soft);--status-refunded:var(--danger);--status-failed-bg:var(--danger-soft);--status-failed:var(--danger);--status-active-bg:var(--accent-soft);--status-active:var(--accent);--pine:#14342a;--pine-deep:#0f2820;--gold:#c6a14e;--gold-light:#e6cf94;--cream:#f3ead6;--cream-soft:#cdbf9f;--font-display:"Fraunces",Georgia,serif;--font-body:"DM Sans","Helvetica Neue",sans-serif;--font-mono:"DM Mono","Courier New",monospace;--text-xs:11px;--text-sm:13px;--text-base:16px;--text-md:18px;--text-lg:22px;--text-xl:28px;--text-2xl:36px;--text-3xl:48px;--sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:20px;--sp-6:24px;--sp-8:32px;--sp-10:40px;--sp-12:48px;--sp-16:64px;--sp-20:80px;--r-sm:8px;--r-md:12px;--r-lg:18px;--r-xl:24px;--r-pill:999px;--shadow-sm:0 1px 2px rgba(29,26,22,.04);--shadow-md:0 1px 2px rgba(29,26,22,.05),0 4px 12px -2px rgba(29,26,22,.10);--shadow-lg:0 1px 2px rgba(29,26,22,.05),0 12px 32px -12px rgba(29,26,22,.18);--ease-out:cubic-bezier(.2,.7,.2,1);--ease-back:cubic-bezier(.34,1.56,.64,1);--radius:var(--r-lg);--shadow:var(--shadow-lg);--accent-warm:var(--terra)}*{box-sizing:border-box;margin:0;padding:0}body,html{background:var(--paper);color:var(--ink);font-family:var(--font-body);-webkit-font-smoothing:antialiased;font-feature-settings:"ss01";line-height:1.6}body{background-image:radial-gradient(1200px 600px at 50% -10%,#fbf6ec 0,transparent 60%);min-height:100vh}h1,h2,h3{font-family:var(--font-display);font-weight:500;letter-spacing:-.01em}a{color:inherit}.money{font-family:var(--font-display);font-weight:500;letter-spacing:-.01em}@keyframes rise{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}.tap-rings{position:relative;display:grid;place-items:center;border-radius:50%}.tap-rings:after,.tap-rings:before{content:"";position:absolute;border-radius:50%;border:1.6px solid var(--accent)}.tap-hero{width:120px;height:120px;border:2px solid var(--accent);margin:0 auto var(--sp-2);animation:rise .6s var(--ease-out) both}.tap-hero:before{width:86px;height:86px;opacity:.6}.tap-hero:after{width:50px;height:50px;opacity:.32}.tap-hero .center{font-family:var(--font-display);font-size:13px;letter-spacing:.12em;text-transform:uppercase;color:var(--accent);z-index:1}.tap-mini{width:34px;height:34px;border:1.6px solid var(--accent);flex-shrink:0}.tap-mini:before{width:23px;height:23px;opacity:.55}.tap-mini:after{width:13px;height:13px;opacity:.3}.tip-wrap{max-width:460px;margin:0 auto;padding:var(--sp-8) var(--sp-5) var(--sp-16);min-height:100vh;display:flex;flex-direction:column}.brandmark{font-family:var(--font-display);font-size:15px;letter-spacing:.02em;color:var(--ink-soft);text-align:center;margin-bottom:var(--sp-6)}.brandmark b{color:var(--accent);font-weight:600}.payee{text-align:center;display:flex;flex-direction:column;align-items:center;gap:var(--sp-3);margin-bottom:var(--sp-2);animation:rise .6s .12s var(--ease-out) both}.payee .avatar{width:96px;height:96px;border-radius:50%;object-fit:cover;border:3px solid var(--card);box-shadow:var(--shadow-lg);background:var(--accent-soft);color:var(--accent);display:grid;place-items:center;font-family:var(--font-display);font-size:34px;font-weight:500}.payee .role{color:var(--ink-soft);font-size:var(--text-sm)}.payee h1{font-size:var(--text-xl);line-height:1.1}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-md);padding:var(--sp-6);margin-top:var(--sp-6);animation:rise .6s .24s var(--ease-out) both}.presets{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:var(--sp-2);gap:var(--sp-2)}.preset{border:1.5px solid var(--line);background:var(--card-raised);border-radius:var(--r-md);padding:var(--sp-4) var(--sp-2);font-size:var(--text-lg);font-family:var(--font-display);font-weight:500;color:var(--ink);cursor:pointer;text-align:center;transition:transform .12s var(--ease-out),border-color .12s var(--ease-out),background .12s var(--ease-out)}.preset:hover{transform:translateY(-1px);border-color:var(--accent-mid)}.preset.selected{border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}.custom-row{margin-top:var(--sp-3);display:flex;align-items:center;gap:var(--sp-2)}.custom-row .dollar{font-family:var(--font-display);font-size:var(--text-lg);color:var(--ink-soft)}.custom-input{flex:1 1;border:1.5px solid var(--line);border-radius:var(--r-md);padding:var(--sp-3) var(--sp-3);font-size:var(--text-md);font-family:var(--font-body);background:var(--card-raised);color:var(--ink)}.custom-input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px rgba(31,107,79,.1)}.note-input{width:100%;margin-top:var(--sp-3);border:1.5px solid var(--line);border-radius:var(--r-md);padding:var(--sp-3);font-size:var(--text-sm);resize:none;font-family:var(--font-body);background:var(--card-raised);color:var(--ink)}.note-input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px rgba(31,107,79,.1)}.min-hint{margin-top:var(--sp-4)}.assurance,.min-hint{color:var(--ink-soft);font-size:var(--text-sm);text-align:center}.assurance{margin-top:var(--sp-5);line-height:1.5}.assurance b{color:var(--accent);font-weight:600}.btn{width:100%;margin-top:var(--sp-5);border:none;cursor:pointer;background:var(--accent);color:#fff;border-radius:var(--r-md);padding:var(--sp-4);font-size:var(--text-md);font-weight:600;font-family:var(--font-body);box-shadow:0 2px 8px rgba(31,107,79,.25);transition:transform .12s var(--ease-out),background .12s var(--ease-out),opacity .12s var(--ease-out)}.btn:hover{transform:translateY(-1px);background:var(--accent-deep)}.btn:active{transform:translateY(0);opacity:.9}.btn:disabled{opacity:.45;cursor:not-allowed;transform:none}.error{color:var(--danger);font-size:var(--text-sm);margin-top:var(--sp-3)}.error,.success{text-align:center}.success{padding-top:var(--sp-10);animation:rise .6s var(--ease-out) both}.success .check{width:72px;height:72px;border-radius:50%;background:var(--accent-soft);color:var(--accent);display:grid;place-items:center;margin:0 auto var(--sp-5);font-size:34px}.success h1{font-size:var(--text-xl);margin-bottom:var(--sp-2)}.success p{color:var(--ink-soft)}.stars{display:flex;gap:var(--sp-2);justify-content:center;margin-top:var(--sp-5)}.star{font-size:30px;cursor:pointer;color:var(--line);transition:color .1s}.star.on{color:var(--terra)}.login-wrap{max-width:400px;margin:0 auto;padding:var(--sp-16) var(--sp-5) var(--sp-16);min-height:100vh;display:flex;flex-direction:column}.login-head{text-align:center;margin-top:var(--sp-4);animation:rise .6s .12s var(--ease-out) both}.login-head h1{font-size:var(--text-xl);line-height:1.1}.login-head p{color:var(--ink-soft);font-size:var(--text-sm);margin-top:var(--sp-2)}.login-card{gap:var(--sp-4)}.field,.login-card{display:flex;flex-direction:column}.field{gap:var(--sp-2)}.field-label{font-size:var(--text-sm);font-weight:500;color:var(--ink-soft)}.login-card .btn{margin-top:var(--sp-2)}.dash{max-width:1000px;margin:0 auto;padding:var(--sp-8) var(--sp-6) var(--sp-20)}.dash h1{font-size:var(--text-2xl);margin-bottom:var(--sp-1)}.dash .sub{color:var(--ink-soft)}.dash .sub,.dash-brand{margin-bottom:var(--sp-6)}.dash-brand{display:flex;align-items:center;gap:var(--sp-3)}.dash-brand .wordmark{font-family:var(--font-display);font-size:var(--text-md);font-weight:500}.dash-brand .wordmark b{color:var(--accent);font-weight:600}.logout-btn{margin-left:auto;background:transparent;border:1.5px solid var(--line);color:var(--ink-soft);padding:var(--sp-2) var(--sp-4);border-radius:var(--r-sm);font-size:var(--text-sm);font-weight:500;font-family:var(--font-body);cursor:pointer;transition:border-color .12s var(--ease-out),color .12s var(--ease-out)}.logout-btn:hover{border-color:var(--line-strong);color:var(--ink)}.dash nav{display:flex;gap:var(--sp-5);margin-bottom:var(--sp-6);border-bottom:1px solid var(--line);padding-bottom:var(--sp-4);flex-wrap:wrap}.dash nav a{color:var(--ink-soft);text-decoration:none;font-weight:500;font-size:var(--text-sm);transition:color .12s}.dash nav a:hover{color:var(--accent)}.table{width:100%;border-collapse:collapse;background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);overflow:hidden}.table th{text-align:left;font-size:var(--text-xs);font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-soft);background:var(--paper)}.table td,.table th{padding:var(--sp-3) var(--sp-4);border-bottom:1px solid var(--line)}.table td{font-size:var(--text-sm)}.table tr:last-child td{border-bottom:none}.table td .money{font-size:var(--text-base)}.pill{display:inline-block;padding:3px 10px;border-radius:var(--r-pill);font-size:var(--text-xs);font-weight:600;letter-spacing:.02em}.pill.paid,.pill.transferred{background:var(--status-transferred-bg);color:var(--status-transferred)}.pill.active{background:var(--status-active-bg);color:var(--status-active)}.pill.held{background:var(--status-held-bg);color:var(--status-held)}.pill.pending{background:var(--status-pending-bg);color:var(--status-pending)}.pill.refunded{background:var(--status-refunded-bg);color:var(--status-refunded)}.pill.failed,.pill.restricted{background:var(--status-failed-bg);color:var(--status-failed)}.linkbtn{background:var(--accent);color:#fff;border:none;padding:var(--sp-2) var(--sp-4);border-radius:var(--r-sm);font-size:var(--text-sm);cursor:pointer;font-weight:600;transition:background .12s var(--ease-out),transform .12s var(--ease-out)}.linkbtn:hover{background:var(--accent-deep);transform:translateY(-1px)}.empty{color:var(--ink-soft);padding:var(--sp-6);text-align:center}