:root{--cover:#1e3226;--cover-deep:#152318;--foil:#c9a86a;--foil-dim:#9a8155;--paper:#f5efdf;--paper-2:#fbf7ea;--ink:#37342c;--ink-soft:#7a7362;--rule:#667e9e2b;--marginline:#cf7c6e8c;--green:#41684e;--green-ink:#35573f;--amber:#a97f2f;--blue:#5a7396;--red:#ae5145;--sticky:#f7e9a4;--slipline:#78694633;--hand:"Kaiti SC", "KaiTi", "STKaiti", "AR PL UKai CN", "TW-Kai", "Noto Serif CJK SC", serif;--body:"Songti SC", "Noto Serif CJK SC", "Source Han Serif SC", "SimSun", serif;--mono:ui-monospace, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;--noise:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='140' height='140'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2'/><feColorMatrix values='0 0 0 0 0.30 0 0 0 0 0.26 0 0 0 0 0.18 0 0 0 0.05 0'/></filter><rect width='140' height='140' filter='url(%23n)'/></svg>")}*{box-sizing:border-box;margin:0;padding:0}html,body{height:100%}body{background:var(--cover);background-image:var(--noise), radial-gradient(ellipse 800px 460px at 50% -80px, #2a4433 0%, var(--cover) 65%), linear-gradient(var(--cover), var(--cover-deep));color:var(--ink);font-family:var(--body);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;background-attachment:fixed}#root{min-height:100dvh}.app{background:var(--paper);flex-direction:column;max-width:480px;height:100dvh;min-height:100dvh;margin:0 auto;display:flex;position:relative;overflow:hidden;box-shadow:0 0 60px #00000059}.app:after{content:"";background:var(--noise);pointer-events:none;z-index:20;position:absolute;inset:0}:focus-visible{outline:2px solid var(--green);outline-offset:1px}.screen{flex-direction:column;flex:1;min-height:0;display:flex;position:relative}.scroll{-webkit-overflow-scrolling:touch;background-image:linear-gradient(to right, transparent 0 26px, var(--marginline) 26px 27.5px, transparent 27.5px), repeating-linear-gradient(to bottom, transparent 0 29px, var(--rule) 29px 30px);background-attachment:local,local;flex:1;padding:6px 16px 108px 40px;overflow-y:auto}.screen-head{z-index:3;background:var(--paper);border-bottom:3px double #78694659;justify-content:space-between;align-items:baseline;gap:8px;padding:16px 16px 10px 40px;display:flex;position:relative}.screen-head .head-main{min-width:0}.screen-head h2{font-family:var(--hand);font-size:21px;font-weight:700;line-height:1.2}.screen-head .meta{color:var(--ink-soft);font-size:12px;font-family:var(--hand)}.backbtn{font-family:var(--hand);color:var(--green-ink);cursor:pointer;background:0 0;border:none;flex:none;align-self:center;padding:4px 8px 4px 0;font-size:14px;font-weight:700}.stamp-av{width:27px;height:27px;font-family:var(--mono);background:0 0;border:1.8px solid;border-radius:50%;flex:none;place-items:center;font-size:10.5px;font-weight:700;display:inline-grid;transform:rotate(-4deg)}.slip{background:var(--paper-2);border:1px solid var(--slipline);border-radius:2px;margin:17px 0;padding:12px 13px;position:relative;box-shadow:0 1px 2px #463c1e1f,0 7px 16px #463c1e12}.slip.tilt-odd{transform:rotate(-.45deg)}.slip.tilt-even{transform:rotate(.4deg)}.slip.flat{transform:none}.slip.tappable{cursor:pointer}.tape{mix-blend-mode:multiply;background:#41684e52 repeating-linear-gradient(90deg,#ffffff24 0 5px,#0000 5px 10px);width:74px;height:19px;position:absolute;top:-9px;left:50%;transform:translate(-50%)rotate(-2.5deg);box-shadow:0 1px 2px #00000012}.tape.amber{background-color:#a97f2f47;transform:translate(-50%)rotate(1.8deg)}.tape.blue{background-color:#5a739647;transform:translate(-50%)rotate(-1.2deg)}.tag{font-family:var(--mono);letter-spacing:.18em;background:var(--paper-2);border:1.5px solid;border-radius:2px;padding:2.5px 7px;font-size:9px;font-weight:700;position:absolute;top:-9px;left:9px;transform:rotate(-2.5deg)}.tag.place{color:var(--green-ink)}.tag.money{color:var(--amber)}.tag.note{color:var(--blue)}.tag.year{color:var(--red)}.slip-title{justify-content:space-between;align-items:baseline;gap:10px;font-size:14.5px;font-weight:700;display:flex}.slip-title .t{font-family:var(--hand);min-width:0;font-size:15.5px}.slip-sub{color:var(--ink-soft);margin-top:4px;font-size:12px;line-height:1.6}.slip-time{font-family:var(--mono);color:var(--ink-soft);flex:none;font-size:10.5px;font-weight:400}.amt{font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:.95em;font-weight:700}.diary-date{justify-content:space-between;align-items:center;margin:20px 2px 4px;display:flex}.diary-date .d{font-family:var(--hand);font-size:15.5px;font-weight:700}.datestamp{font-family:var(--mono);letter-spacing:.14em;color:var(--red);border:1.5px solid var(--red);opacity:.85;border-radius:3px;padding:3px 8px;font-size:9.5px;font-weight:700;transform:rotate(2deg)}.navlinks{font-family:var(--hand);margin-top:7px;font-size:13.5px;font-weight:700}.navlinks a{color:var(--green-ink);border-bottom:1.5px solid #41684e73;margin-right:16px;text-decoration:none}.navlinks a.waze{color:var(--blue);border-bottom-color:#5a739673}.ticket{padding-left:44px}.ticket:before{content:"";border-left:1.5px dashed #78694666;position:absolute;top:6px;bottom:6px;left:32px}.ticket .punch{writing-mode:vertical-rl;font-family:var(--mono);letter-spacing:.3em;color:#7869468c;font-size:8.5px;position:absolute;top:50%;left:9px;transform:translateY(-50%)rotate(180deg)}.note-slip{background:#faf3d6}.quote{font-family:var(--hand);margin-top:4px;font-size:14.5px;line-height:1.7}.sticky-note{background:var(--sticky);font-family:var(--hand);flex-wrap:wrap;justify-content:space-between;gap:8px;margin:14px 16px 2px 40px;padding:10px 13px;font-size:13.5px;font-weight:700;display:flex;position:relative;transform:rotate(.8deg);box-shadow:0 2px 6px #463c1e2e}.sticky-note:after{content:"";border-top:0 solid #0000;border-bottom:14px solid #0000;border-left:0 solid #0000;border-right:14px solid #e3d181;position:absolute;bottom:0;right:0;transform:rotate(90deg)}.sticky-note .owe{color:var(--red)}.sticky-note .get{color:var(--green-ink)}.btn{font-family:var(--hand);cursor:pointer;width:100%;color:var(--ink);background:var(--paper-2);border:none;border-radius:4px;padding:13px 16px;font-size:16px;font-weight:700;transition:filter .15s}.btn:hover{filter:brightness(1.05)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn.primary{background:var(--green-ink);color:#f2eedd;outline-offset:-5px;outline:1px dashed #f2eedd80;box-shadow:0 3px 10px #35573f59}.btn.secondary{background:var(--paper-2);color:var(--green-ink);border:1.5px solid var(--green-ink);box-shadow:none;outline:none}.btn.ghost{background:var(--paper-2);border:1.5px solid var(--slipline);color:var(--ink);width:auto;padding:8px 14px;font-size:13.5px}.btn.danger{color:var(--red);background:0 0;border:1.5px solid #ae514580}.sheet-foot{background:var(--paper);border-top:1px solid var(--slipline);z-index:3;padding:12px 16px 16px;position:relative}.actionbar{background:linear-gradient(transparent, var(--paper) 40%);z-index:8;align-items:center;gap:8px;padding:12px 14px 16px;display:flex;position:absolute;bottom:0;left:0;right:0}.mic-pill{background:var(--green-ink);color:#f2eedd;min-width:0;font-size:15px;font-weight:700;font-family:var(--hand);cursor:pointer;outline-offset:-5px;white-space:nowrap;text-overflow:ellipsis;border:none;border-radius:999px;outline:1px dashed #f2eedd80;flex:1;padding:14px 12px;overflow:hidden;box-shadow:0 5px 16px #35573f66}.fab{border:1.5px solid var(--slipline);background:var(--paper-2);width:44px;height:44px;font-family:var(--hand);color:var(--ink);cursor:pointer;border-radius:50%;flex:none;font-size:15px;font-weight:700;box-shadow:0 2px 6px #463c1e26}.amount-display{text-align:center;padding:20px 0 4px}.amount-display .field{border-bottom:2px dotted #78694673;justify-content:center;align-items:baseline;gap:4px;padding:0 14px 2px;display:inline-flex}.amount-display .cur{color:var(--ink-soft);font-size:18px;font-family:var(--hand)}.amount-display input.val{font-family:var(--hand);font-variant-numeric:tabular-nums;text-align:center;width:5.2em;color:var(--ink);background:0 0;border:none;padding:0;font-size:44px;font-weight:700}.amount-display input.val:focus{outline:none}.amount-display .what{font-family:var(--hand);color:var(--ink-soft);text-align:center;background:0 0;border:none;width:90%;margin-top:8px;font-size:15px}.amount-display .what:focus{color:var(--ink);outline:none}.field-label{font-family:var(--hand);color:var(--ink-soft);margin:20px 2px 10px;font-size:13.5px;font-weight:700}.field-label.row{justify-content:space-between;align-items:center;display:flex}.chip-row{flex-wrap:wrap;gap:9px;display:flex}.chip{border:1.5px solid var(--slipline);background:var(--paper-2);font-family:var(--hand);color:var(--ink-soft);cursor:pointer;border-radius:999px;align-items:center;gap:8px;padding:8px 15px 8px 9px;font-size:15px;font-weight:700;transition:border-color .15s,background .15s,color .15s;display:flex}.chip.on{border-color:var(--green-ink);color:var(--ink);background:#41684e1f}.ledger-row{align-items:baseline;gap:9px;padding:10px 2px;font-size:14px;display:flex}.ledger-row .stamp-av{align-self:center}.ledger-row .name{font-weight:700;font-family:var(--hand);font-size:14.5px}.dots{border-bottom:2px dotted #6e685a66;flex:1;transform:translateY(-3px)}.ledger-row .amt{flex:none}.seg{gap:5px;display:inline-flex}.seg button{border:1.5px solid var(--slipline);font-family:var(--hand);color:var(--ink-soft);background:var(--paper-2);cursor:pointer;border-radius:3px;padding:6px 12px;font-size:13px;font-weight:700}.seg button.on{border-color:var(--green-ink);color:var(--green-ink);background:#41684e1a}.date-row{font-family:var(--hand);background:var(--paper-2);border:1px solid var(--slipline);border-radius:2px;justify-content:space-between;align-items:center;padding:4px 13px;font-size:14.5px;font-weight:700;display:flex}.date-row input{font-family:var(--mono);color:var(--ink);background:0 0;border:none;width:100%;padding:8px 0;font-size:13.5px;font-weight:700}.date-row input:focus{outline:none}.paper-input{width:100%;font-family:var(--hand);color:var(--ink);background:0 0;border:none;border-bottom:2px dotted #78694673;padding:4px 2px;font-size:16px;font-weight:700}.paper-input:focus{border-bottom-color:var(--green-ink);outline:none}.split-input{font-family:var(--mono);font-variant-numeric:tabular-nums;color:var(--ink);text-align:right;background:0 0;border:none;border-bottom:1.5px dotted #78694673;width:88px;padding:2px;font-size:14px;font-weight:700}.split-input:focus{border-bottom-color:var(--green-ink);outline:none}.warn{color:var(--amber);font-family:var(--hand);margin:8px 2px 0;font-size:13px;font-weight:700}.settle-sum{text-align:center;padding:18px 0 6px}.settle-sum .big{font-family:var(--hand);font-variant-numeric:tabular-nums;font-size:38px;font-weight:700}.settle-sum .lbl{font-family:var(--hand);color:var(--ink-soft);margin-top:4px;font-size:13px}.transfer{font-family:var(--hand);border-bottom:1px solid #78694638;align-items:center;gap:9px;padding:12px 2px;font-size:15px;font-weight:700;display:flex}.transfer .to{color:var(--ink-soft);font-size:13px}.transfer .sum{margin-left:auto;font-size:15px}.transfer .paid{font-family:var(--hand);border:1.5px solid var(--slipline);color:var(--ink-soft);cursor:pointer;background:0 0;border-radius:3px;flex:none;margin-left:9px;padding:5px 10px;font-size:12.5px;font-weight:700}.transfer .paid.stamped{border-color:var(--red);color:var(--red);transform:rotate(-7deg)}.hint{font-family:var(--hand);color:var(--ink-soft);margin:10px 2px 0;font-size:13px;line-height:1.7}.hint b{color:var(--green-ink)}.share-row{gap:9px;margin-top:18px;display:flex}.share-row .btn{flex:1}.wa-block{margin-top:12px}.wa-block pre{font-family:var(--mono);color:#d8e6d4;white-space:pre-wrap;background:#20362a;border-radius:4px;padding:14px;font-size:11.5px;line-height:1.8;overflow-x:auto}.share-card-wrap{margin-top:16px}.share-card{background:var(--paper-2);border:1px solid var(--slipline);padding:22px 18px 16px;position:relative;transform:rotate(-.6deg);box-shadow:0 3px 14px #463c1e2e}.sc-title{font-family:var(--hand);text-align:center;font-size:19px;font-weight:700}.sc-sub{font-family:var(--hand);color:var(--ink-soft);text-align:center;margin-top:3px;font-size:12px}.sc-rows{margin:16px 0 4px}.sc-divider{border-top:2px dashed #78694659;margin:12px 0}.sc-total{font-family:var(--hand);justify-content:space-between;align-items:baseline;font-size:15px;font-weight:700;display:flex}.sc-total .amt{font-size:19px}.sc-foot{font-family:var(--mono);letter-spacing:.22em;color:var(--ink-soft);text-align:center;margin-top:14px;font-size:9px}.sc-stamp{font-family:var(--mono);letter-spacing:.12em;color:var(--red);border:1.5px solid var(--red);opacity:.8;border-radius:3px;padding:3px 7px;font-size:9px;font-weight:700;position:absolute;top:14px;right:12px;transform:rotate(6deg)}.trip-cover{background:var(--paper-2);border:1px solid var(--slipline);cursor:pointer;border-radius:2px;margin:19px 0;padding:13px 13px 11px 21px;position:relative;box-shadow:0 1px 2px #463c1e1f,0 7px 16px #463c1e14}.trip-cover.tilt-odd{transform:rotate(-.35deg)}.trip-cover.tilt-even{transform:rotate(.35deg)}.trip-cover .spine{width:7px;position:absolute;top:0;bottom:0;left:0}.trip-num{font-family:var(--hand);color:var(--red);border:1.5px solid var(--red);background:var(--paper-2);opacity:.9;border-radius:3px;padding:2px 8px;font-size:12px;font-weight:700;position:absolute;top:-10px;right:10px;transform:rotate(2.5deg)}.trip-title{font-family:var(--hand);padding-right:60px;font-size:17px;font-weight:700}.trip-meta{color:var(--ink-soft);margin-top:3px;font-size:12px}.trip-stats{justify-content:space-between;align-items:baseline;margin-top:8px;display:flex}.trip-stats .go{font-family:var(--hand);color:var(--green-ink);font-size:12.5px;font-weight:700}.newtrip{width:100%;font-family:var(--hand);color:var(--green-ink);cursor:pointer;background:#41684e0d;border:2px dashed #41684e80;border-radius:3px;margin:20px 0 2px;padding:15px;font-size:15.5px;font-weight:700}.big-stamp{border:3px double var(--red);width:88px;height:88px;color:var(--red);font-family:var(--hand);text-align:center;opacity:.85;border-radius:50%;place-items:center;margin:4px auto 12px;font-size:14.5px;font-weight:700;line-height:1.3;display:grid;transform:rotate(-11deg)}.cert-title{font-family:var(--hand);text-align:center;font-size:22px;font-weight:700}.cert-sub{font-family:var(--hand);color:var(--ink-soft);text-align:center;margin-top:4px;font-size:13px}.members-row{justify-content:center;gap:12px;margin-top:14px;display:flex}.card-acts{gap:8px;margin-top:8px;display:flex}.card-acts button{font-family:var(--hand);border:1.5px solid var(--slipline);background:var(--paper);color:var(--ink-soft);cursor:pointer;border-radius:3px;padding:5px 12px;font-size:12.5px;font-weight:700}.card-acts button.del{color:var(--red);border-color:#ae514566}.onboard{z-index:3;flex:1;padding:34px 22px 40px;position:relative;overflow-y:auto}.onboard .logo{font-family:var(--mono);letter-spacing:.42em;color:var(--foil-dim);margin-bottom:14px;font-size:12px}.onboard h1{font-family:var(--hand);color:var(--ink);font-size:25px;font-weight:700;line-height:1.35}.onboard .lead{font-family:var(--hand);color:var(--ink-soft);margin:8px 0 22px;font-size:14px}.member-input-row{align-items:center;gap:10px;margin:4px 0;display:flex}.member-input-row .me-pick{font-family:var(--hand);border:1.5px solid var(--slipline);background:var(--paper-2);color:var(--ink-soft);cursor:pointer;border-radius:999px;flex:none;padding:5px 11px;font-size:12px;font-weight:700}.member-input-row .me-pick.on{border-color:var(--amber);color:var(--amber);background:#a97f2f1a}.link-btn{font-family:var(--hand);color:var(--green-ink);cursor:pointer;background:0 0;border:none;border-bottom:1.5px solid #41684e66;padding:2px 0;font-size:14px;font-weight:700}.or-line{text-align:center;font-family:var(--hand);color:var(--ink-soft);margin:22px 0 14px;font-size:13px}.modal-backdrop{z-index:40;background:#1523188c;justify-content:center;align-items:flex-end;padding:0;display:flex;position:fixed;inset:0}.modal-card{background:var(--paper);width:100%;max-width:480px;padding:20px 18px calc(18px + env(safe-area-inset-bottom));border-radius:14px 14px 0 0;position:relative;box-shadow:0 -8px 30px #0006}.modal-card h3{font-family:var(--hand);margin-bottom:4px;font-size:18px;font-weight:700}.modal-card .modal-sub{font-family:var(--hand);color:var(--ink-soft);margin-bottom:14px;font-size:13px}.modal-actions{gap:9px;margin-top:18px;display:flex}.modal-actions .btn{flex:1}.toast{z-index:60;background:var(--sticky);color:var(--ink);font-family:var(--hand);text-align:center;border-radius:3px;max-width:80%;padding:11px 16px;font-size:14px;font-weight:700;position:fixed;bottom:120px;left:50%;transform:translate(-50%);box-shadow:0 4px 14px #463c1e4d}@keyframes pulse{0%,to{box-shadow:0 0 #41684e47}50%{box-shadow:0 0 0 9px #41684e00}}.empty-note{font-family:var(--hand);color:var(--ink-soft);text-align:center;margin:40px 8px;font-size:14px;line-height:1.8}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}
