:root{--paper: #f7efdf;--paper-card: #fffdf6;--ink: #3b2b1c;--ink-soft: #8a6f52;--ink-faint: #b9a184;--line: #e6d7bd;--accent: #d2593a;--accent-dark: #a8442b;--mint: #a8ddc6;--pink: #f2c2d1;--peach: #f6c9b0;--shadow: 0 2px 10px rgba(90, 62, 35, .12);--safe-top: env(safe-area-inset-top, 0px);--safe-bottom: env(safe-area-inset-bottom, 0px)}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;padding:0;min-height:100%;overscroll-behavior-y:none}body{background:var(--paper);background-image:repeating-linear-gradient(to bottom,transparent 0px,transparent 27px,rgba(160,130,95,.07) 27px,rgba(160,130,95,.07) 28px);color:var(--ink);font-family:Nunito,system-ui,sans-serif;font-size:16px;line-height:1.5}#root{position:relative;max-width:480px;margin:0 auto;min-height:100dvh;padding:calc(var(--safe-top) + 16px) 20px calc(var(--safe-bottom) + 20px);display:flex;flex-direction:column}.hand{font-family:Caveat,Nunito,cursive;font-weight:600;line-height:1.15}h1.hand{font-size:40px;margin:0}h2.hand{font-size:30px;margin:0}.sub{color:var(--ink-soft);font-size:14px;margin:4px 0 0}.screen{display:flex;flex-direction:column;flex:1;gap:18px}.spacer{flex:1}.card{background:var(--paper-card);border:1px solid var(--line);border-radius:10px;padding:16px;box-shadow:var(--shadow)}.tape{width:74px;height:22px;border-radius:2px;opacity:.85;align-self:center}.btn{appearance:none;border:none;width:100%;padding:15px 20px;border-radius:999px;background:var(--accent);color:#fff;font-family:inherit;font-size:17px;font-weight:700;cursor:pointer;transition:transform .12s ease,background .12s ease}.btn:active{transform:scale(.97);background:var(--accent-dark)}.btn:disabled{background:var(--ink-faint);cursor:default}.btn-ghost{background:transparent;color:var(--ink-soft);font-weight:600;font-size:15px;padding:10px;border:none;font-family:inherit;cursor:pointer;width:100%}.back{background:none;border:none;font-family:inherit;font-size:15px;color:var(--ink-soft);padding:4px 0;cursor:pointer;align-self:flex-start}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:10px}.chip{background:var(--paper-card);border:1px solid var(--line);border-radius:10px;padding:14px 10px;text-align:center;font-family:inherit;font-size:15px;color:var(--ink);cursor:pointer;transition:transform .12s ease}.chip:active{transform:scale(.97)}.chip[data-on=true]{background:var(--peach);border-color:var(--accent)}.cal-head,.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}.cal-head span{text-align:center;font-size:12px;color:var(--ink-soft);padding-bottom:6px}.cal-cell{aspect-ratio:1;display:flex;align-items:center;justify-content:center;border:none;background:none;font-family:inherit;font-size:15px;color:var(--ink);border-radius:999px;cursor:pointer}.cal-cell:disabled{color:var(--ink-faint);cursor:default}.cal-cell[data-on=true]{background:var(--accent);color:#fff;font-weight:700}textarea{width:100%;min-height:110px;border:1px solid var(--line);border-radius:10px;background:var(--paper-card);padding:12px;font-family:Caveat,Nunito,cursive;font-size:22px;color:var(--ink);resize:none}textarea:focus{outline:2px solid var(--peach)}.deck{position:relative;height:340px}.swipe-card{position:absolute;inset:0;background:var(--paper-card);border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;padding:24px;text-align:center;cursor:grab}.picked{display:flex;flex-wrap:wrap;gap:6px}.pill{background:var(--mint);border-radius:999px;padding:5px 12px;font-size:13px;color:#1c4a3a}.countdown{text-align:center}.countdown b{font-family:Caveat,cursive;font-size:64px;font-weight:700;display:block;line-height:1}.heart{position:fixed;bottom:-40px;font-size:26px;pointer-events:none;animation:rise 3s linear forwards}@keyframes rise{to{transform:translateY(-110dvh) rotate(40deg);opacity:0}}input[type=text],input[type=password]{width:100%;border:1px solid var(--line);border-radius:10px;background:var(--paper-card);padding:14px;font-family:inherit;font-size:17px;color:var(--ink);text-align:center}input:focus{outline:2px solid var(--peach)}.err{color:var(--accent-dark);font-size:14px;text-align:center;margin:0}.label{font-size:13px;color:var(--ink-soft);margin:0 0 6px}.row{display:flex;align-items:center;gap:6px;background:var(--paper-card);border:1px solid var(--line);border-radius:10px;padding:0 6px 0 14px;min-height:46px}.row>span{flex:1}.row-open{flex:1;display:flex;align-items:center;justify-content:space-between;gap:8px;background:none;border:none;font-family:inherit;font-size:16px;color:var(--ink);text-align:left;padding:12px 0;cursor:pointer}.count{font-size:13px;color:var(--ink-faint)}.x{width:40px;height:40px;flex:none;border:none;background:none;color:var(--ink-faint);font-size:24px;line-height:1;cursor:pointer;border-radius:8px}.x:active{background:var(--peach);color:var(--accent-dark)}.x-small{border:none;background:none;color:#1c4a3a;opacity:.55;font-size:17px;line-height:1;padding:0 0 0 7px;cursor:pointer}.add{width:52px;flex:none;border:1px solid var(--line);border-radius:10px;background:var(--paper-card);color:var(--accent);font-size:26px;line-height:1;cursor:pointer;font-family:inherit}.add:disabled{color:var(--ink-faint)}.gear{position:absolute;top:calc(var(--safe-top) + 14px);right:18px;background:none;border:none;font-family:inherit;font-size:14px;color:var(--ink-soft);cursor:pointer;padding:6px}.tick{width:26px;height:26px;flex:none;border:2px solid var(--ink-faint);border-radius:50%;background:none;color:#fff;font-size:15px;line-height:1;cursor:pointer;padding:0}.tick.on{background:var(--mint);border-color:var(--mint);color:#1c4a3a}.row.done span{color:var(--ink-faint);text-decoration:line-through}.who{font-size:12px;color:var(--ink-faint);margin-left:8px}.nav{display:flex;gap:8px}.nav button{flex:1;background:none;border:none;font-family:inherit;font-size:14px;color:var(--ink-soft);padding:12px 4px;cursor:pointer;border-top:1px solid var(--line)}.secret{position:fixed;left:50%;bottom:22%;transform:translate(-50%);max-width:300px;background:var(--paper-card);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow);padding:18px 20px;text-align:center;z-index:5}.swipe-card.behind{pointer-events:none;opacity:.55}.stamp{position:absolute;top:18px;font-family:Caveat,cursive;font-size:30px;font-weight:700;padding:2px 14px;border:3px solid;border-radius:10px;pointer-events:none}.stamp.yes{right:16px;transform:rotate(12deg);color:#0f6e56;border-color:#0f6e56}.stamp.no{left:16px;transform:rotate(-12deg);color:var(--accent-dark);border-color:var(--accent-dark)}@keyframes pick{0%{transform:scale(.55)}60%{transform:scale(1.14)}to{transform:scale(1)}}.cal-cell[data-on=true]{animation:pick .3s cubic-bezier(.34,1.56,.64,1)}.cal-cell:not(:disabled):active{background:var(--peach)}@keyframes pillIn{0%{opacity:0;transform:scale(.6)}to{opacity:1;transform:scale(1)}}span.pill{animation:pillIn .26s cubic-bezier(.34,1.56,.64,1)}@keyframes rowIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.row{animation:rowIn .24s ease-out}.chip{transition:transform .12s ease,background .16s ease,border-color .16s ease}.chip[data-on=true]{animation:pick .3s cubic-bezier(.34,1.56,.64,1)}@keyframes secretIn{0%{opacity:0;transform:translate(-50%) translateY(14px) scale(.9) rotate(-2deg)}to{opacity:1;transform:translate(-50%) translateY(0) scale(1) rotate(-1deg)}}.secret{animation:secretIn .32s cubic-bezier(.34,1.56,.64,1)}.tick{transition:transform .14s ease,background .18s ease,border-color .18s ease}.tick:active{transform:scale(.85)}.tick.on{animation:pick .32s cubic-bezier(.34,1.56,.64,1)}@keyframes heartbeat{0%,to{transform:scale(1)}18%{transform:scale(1.16)}36%{transform:scale(1)}54%{transform:scale(1.1)}}.beat{display:inline-block;animation:heartbeat 2.4s ease-in-out infinite}.countdown b{transition:opacity .2s ease}.swipe-card.spinning{border-color:var(--accent);border-width:2px}
