:root,[data-theme=light]{--bg-primary:#faf6f1;--bg-secondary:#f0e9df;--bg-card:#fff;--text-primary:#3d2c1e;--text-secondary:#6b5544;--text-muted:#9b8a7a;--accent:#d4875e;--accent-hover:#c07348;--accent-soft:#f5ddd0;--border:#e2d6c8;--shadow:0 2px 12px #3d2c1e14;--shadow-hover:0 4px 20px #3d2c1e1f;--success:#6b9e6b;--danger:#c25e5e;--radius:12px;--radius-sm:8px;--nav-bg:#f0e9df}[data-theme=dark]{--bg-primary:#1e1a16;--bg-secondary:#2a2420;--bg-card:#332c26;--text-primary:#f0e9df;--text-secondary:#c4b5a3;--text-muted:#8a7b6a;--accent:#e09b73;--accent-hover:#d4875e;--accent-soft:#3d2c1e;--border:#4a3f35;--shadow:0 2px 12px #0000004d;--shadow-hover:0 4px 20px #0006;--success:#7ab87a;--danger:#d47070;--radius:12px;--radius-sm:8px;--nav-bg:#2a2420}*{box-sizing:border-box;margin:0;padding:0}body{background:var(--bg-primary);color:var(--text-primary);font-family:Segoe UI,system-ui,-apple-system,sans-serif;line-height:1.6;transition:background .3s,color .3s}a{color:var(--accent);text-decoration:none}a:hover{color:var(--accent-hover)}button{cursor:pointer;font-family:inherit}.container{max-width:960px;margin:0 auto;padding:2rem 1.5rem}.card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:1.5rem;transition:box-shadow .2s,transform .2s}.card:hover{box-shadow:var(--shadow-hover)}.card-link:hover{transform:translateY(-2px)}.btn{border-radius:var(--radius-sm);border:none;align-items:center;gap:.4rem;padding:.6rem 1.2rem;font-size:.9rem;font-weight:500;transition:background .2s,transform .1s;display:inline-flex}.btn:active{transform:scale(.97)}.btn:disabled,.btn[disabled]{opacity:.5;cursor:not-allowed;pointer-events:none}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover{background:var(--accent-hover)}.btn-secondary{background:var(--bg-secondary);color:var(--text-primary);border:1px solid var(--border)}.btn-secondary:hover{background:var(--border)}.btn-danger{background:var(--danger);color:#fff}.btn-danger:hover{opacity:.9}.btn-sm{padding:.35rem .8rem;font-size:.8rem}input,textarea,select{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-primary);width:100%;color:var(--text-primary);padding:.7rem 1rem;font-family:inherit;font-size:.95rem;transition:border-color .2s}input:focus,textarea:focus{border-color:var(--accent);outline:none}input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}textarea{resize:vertical;min-height:100px}.page-title{color:var(--text-primary);margin-bottom:1.5rem;font-size:1.8rem;font-weight:700}.page-subtitle{color:var(--text-secondary);margin-bottom:2rem;font-size:1rem}.grid{gap:1.5rem;display:grid}.grid-2{grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}.grid-3{grid-template-columns:repeat(auto-fill,minmax(220px,1fr))}.badge{border-radius:999px;padding:.2rem .6rem;font-size:.75rem;font-weight:600;display:inline-block}.badge-accent{background:var(--accent-soft);color:var(--accent)}.badge-success{color:var(--success);background:#e8f5e8}.badge-muted{background:var(--bg-secondary);color:var(--text-muted)}.form-group{margin-bottom:1rem}.form-group label{color:var(--text-secondary);margin-bottom:.4rem;font-size:.9rem;font-weight:500;display:block}.alert{border-radius:var(--radius-sm);margin-bottom:1rem;padding:.8rem 1rem;font-size:.9rem}.alert-success{color:var(--success);border:1px solid var(--success);background:#e8f5e8}.alert-error{color:var(--danger);border:1px solid var(--danger);background:#fde8e8}.pp-display{color:var(--accent);align-items:center;gap:.3rem;font-weight:600;display:inline-flex}.cal-icon{border:1px solid var(--border);background:var(--bg-card);-webkit-user-select:none;user-select:none;border-radius:6px;flex-direction:column;transition:transform .15s,box-shadow .15s;display:flex;overflow:hidden;box-shadow:0 1px 3px #00000014}.cal-clickable{cursor:pointer}.cal-clickable:hover{transform:scale(1.08);box-shadow:0 3px 10px #00000026}.cal-header{background:var(--accent);color:#fff;text-align:center;letter-spacing:.05em;font-weight:700;line-height:1.2}.cal-body{flex-direction:column;flex:1;justify-content:center;align-items:center;line-height:1;display:flex}.cal-day{color:var(--text-primary);font-weight:700;line-height:1.2}.cal-time{color:var(--text-muted);font-weight:500;line-height:1.3}.mini-cal{-webkit-user-select:none;user-select:none;width:100%}.mini-cal-nav{justify-content:space-between;align-items:center;margin-bottom:.5rem;display:flex}.mini-cal-title{color:var(--text-primary);font-size:.95rem;font-weight:700}.mini-cal-arrow{cursor:pointer;color:var(--text-primary);border-radius:var(--radius-sm);background:0 0;border:none;padding:.15rem .5rem;font-size:1.4rem;line-height:1;transition:background .15s}.mini-cal-arrow:hover{background:var(--bg-secondary)}.mini-cal-grid{text-align:center;grid-template-columns:repeat(7,1fr);gap:2px;display:grid}.mini-cal-dow{color:var(--text-muted);padding:.2rem 0;font-size:.7rem;font-weight:600}.mini-cal-day{aspect-ratio:1;color:var(--text-primary);cursor:pointer;background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;font-size:.85rem;font-weight:500;transition:background .12s,color .12s,transform .1s;display:flex}.mini-cal-day:hover{background:var(--bg-secondary);transform:scale(1.1)}.mini-cal-day.today{border:1.5px solid var(--accent);font-weight:700}.mini-cal-day.selected{background:var(--accent);color:#fff;font-weight:700}.mini-cal-day.selected:hover{background:var(--accent);filter:brightness(1.1)}.appt-banner{color:#fff;border-radius:3px;align-items:center;padding:1px 4px;font-size:.65rem;line-height:1.3;transition:filter .15s,box-shadow .15s;display:flex;overflow:hidden}.appt-banner-clickable:hover{filter:brightness(1.08);box-shadow:0 0 4px 1px #ffffff40}.appt-input{width:100%;color:var(--text-primary);box-sizing:border-box;caret-color:var(--accent);background:0 0;border:none;border-radius:0;outline:none;margin-bottom:1rem;padding:0;font-size:1.5rem;font-weight:600;line-height:1.2}.appt-input:focus{box-shadow:none}.appt-input::placeholder{color:var(--text-muted);opacity:.7}.appt-time-box{background:var(--bg-secondary);border-radius:8px;flex:1;justify-content:center;align-self:stretch;align-items:center;gap:2px;padding:.3rem .5rem;display:inline-flex}.appt-hm-col{flex-direction:column;align-items:center;gap:1.5px;display:flex}.appt-hm-arrow{cursor:pointer;color:var(--text-muted);background:0 0;border:none;border-radius:4px;padding:1px 6px;font-size:.6rem;line-height:1;transition:background .12s,color .12s}.appt-hm-arrow:hover{background:var(--border);color:var(--text-primary)}.appt-hm-input{width:3.2rem;color:var(--text-primary);text-align:center;appearance:texfield;-moz-appearance:textfield;background:0 0;border:none;outline:none;padding:0;font-size:1.7rem;font-weight:400}.appt-hm-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.appt-hm-input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.appt-hm-input:focus{color:var(--accent)}.appt-hm-sep{color:var(--text-muted);align-self:center;padding:0 1px;font-size:1.2rem;font-weight:700}.appt-who-check{cursor:pointer;background:0 0;border:none;align-items:center;gap:.35rem;padding:0;font-size:1.2rem;transition:transform .1s;display:flex}.appt-who-check:hover{transform:scale(1.08)}.appt-check-circle{border:2px solid var(--border);color:#fff;border-radius:50%;justify-content:center;align-items:center;width:20px;height:20px;font-size:.7rem;font-weight:700;transition:background .15s,border-color .15s;display:flex}.appt-type-btn{background:var(--bg-secondary);cursor:pointer;text-align:center;border:none;border-radius:10px;flex:1;padding:.5rem 0;font-size:1.15rem;line-height:1;transition:background .15s,transform .1s}.appt-type-btn:hover{filter:brightness(.95);transform:scale(1.04)}.appt-type-btn.active{background:var(--accent);color:#fff}.appt-cancel-btn,.appt-submit-btn{cursor:pointer;border:none;border-radius:10px;padding:.45rem 1rem;font-size:.85rem;font-weight:600;transition:background .15s,transform .1s}.appt-cancel-btn{background:var(--bg-secondary);color:var(--text-muted)}.appt-cancel-btn:hover{background:var(--border)}.appt-submit-btn{background:var(--accent);color:#fff}.appt-submit-btn:hover{filter:brightness(1.08)}.day-timeline-scroll::-webkit-scrollbar{width:6px}.day-timeline-scroll::-webkit-scrollbar-track{background:var(--bg-secondary);border-radius:3px}.day-timeline-scroll::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}.day-timeline-scroll::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}.wordle-page{flex-direction:column;align-items:center;max-width:500px;margin:0 auto;padding:1rem .5rem;display:flex}.wordle-header{text-align:center;margin-bottom:1rem}.wordle-header h2{margin-bottom:.2rem}.wordle-result{text-align:center;border-radius:var(--radius-sm);margin-bottom:1rem;padding:.8rem 1.2rem;font-weight:500}.wordle-result.won{color:var(--success);background:#e8f5e8}.wordle-result.lost{color:var(--danger);background:#fde8e8}[data-theme=dark] .wordle-result.won{background:#1a2e1a}[data-theme=dark] .wordle-result.lost{background:#2e1a1a}.wordle-grid{flex-direction:column;gap:6px;margin-bottom:1.2rem;display:flex}.wordle-row{justify-content:center;gap:6px;display:flex}.wordle-row.shake{animation:.4s shake}@keyframes shake{0%,to{transform:translate(0)}20%{transform:translate(-6px)}40%{transform:translate(6px)}60%{transform:translate(-4px)}80%{transform:translate(4px)}}.wordle-tile{text-transform:uppercase;border:2px solid var(--border);background:var(--bg-card);width:56px;height:56px;color:var(--text-primary);border-radius:4px;justify-content:center;align-items:center;font-size:1.6rem;font-weight:700;transition:border-color .15s;display:flex}.wordle-tile.filled{border-color:var(--text-muted);animation:.1s pop}@keyframes pop{50%{transform:scale(1.08)}}.wordle-tile.correct{color:#fff;background:#6aaa64;border-color:#6aaa64;animation:.4s forwards flip}.wordle-tile.present{color:#fff;background:#c9b458;border-color:#c9b458;animation:.4s forwards flip}.wordle-tile.absent{color:#fff;background:#787c7e;border-color:#787c7e;animation:.4s forwards flip}[data-theme=dark] .wordle-tile.absent{background:#3a3a3c;border-color:#3a3a3c}@keyframes flip{0%{transform:rotateX(0)}50%{transform:rotateX(90deg)}to{transform:rotateX(0)}}.wordle-keyboard{flex-direction:column;gap:6px;width:100%;max-width:484px;margin-bottom:1rem;display:flex}.wordle-kb-row{justify-content:center;gap:4px;display:flex}.wordle-key{background:var(--bg-secondary);min-width:36px;height:52px;color:var(--text-primary);cursor:pointer;-webkit-user-select:none;user-select:none;border:none;border-radius:4px;justify-content:center;align-items:center;font-size:.85rem;font-weight:600;transition:background .15s,transform 50ms;display:flex}[data-theme=dark] .wordle-key{background:#4a4038}.wordle-key:active{transform:scale(.95)}.wordle-key.wide{min-width:56px;font-size:.75rem}.wordle-key.correct{color:#fff;background:#6aaa64}.wordle-key.present{color:#fff;background:#c9b458}.wordle-key.absent{color:#fff;background:#787c7e}[data-theme=dark] .wordle-key.absent{background:#2a2420}.wordle-actions{gap:.5rem;margin-top:.5rem;display:flex}@media (width<=420px){.wordle-tile{width:48px;height:48px;font-size:1.3rem}.wordle-key{min-width:28px;height:44px;font-size:.75rem}.wordle-key.wide{min-width:44px;font-size:.65rem}}.wedding-page{max-width:860px;margin:0 auto;padding:1.5rem 1rem;font-family:Segoe UI,system-ui,sans-serif}.wedding-scrap-font{font-family:Caveat,cursive}.wedding-section{background:var(--bg-card);border:1px solid var(--border);box-shadow:var(--shadow);border-radius:14px;margin-bottom:2rem;padding:1.8rem 1.5rem 1.5rem;position:relative}.wedding-section:before{content:"";opacity:.7;border-radius:2px;width:80px;height:12px;position:absolute;top:-6px;left:50%;transform:translate(-50%)rotate(-1deg)}.wedding-tape-pink:before{background:#e8a0b4}.wedding-tape-green:before{background:#6b9e6b}.wedding-tape-orange:before{background:#d4875e}.wedding-tape-blue:before{background:#7bafd4}.wedding-section-title{color:var(--text-primary);text-align:center;margin-bottom:1rem;font-family:Caveat,cursive;font-size:1.9rem;font-weight:700}.wedding-divider{text-align:center;letter-spacing:.5em;color:var(--text-muted);-webkit-user-select:none;user-select:none;margin:.5rem 0 1.5rem;font-size:1.2rem}.wedding-polaroid{background:var(--bg-card);border:1px solid var(--border);cursor:default;border-radius:4px;padding:8px 8px 14px;transition:transform .2s,box-shadow .2s;box-shadow:0 3px 12px #0000001a}.wedding-polaroid:hover{transform:rotate(0)scale(1.03);box-shadow:0 6px 20px #00000026}.wedding-polaroid img{object-fit:cover;background:var(--bg-secondary);border-radius:2px;width:100%;height:140px;display:block}.wedding-polaroid-caption{text-align:center;color:var(--text-primary);margin-top:8px;font-family:Caveat,cursive;font-size:1.1rem;font-weight:600}.wedding-polaroid-notes{color:var(--text-secondary);text-align:center;margin-top:2px;font-size:.8rem}.wedding-guest-row{border-radius:8px;align-items:center;gap:.6rem;padding:.5rem .7rem;transition:background .15s;display:flex}.wedding-guest-row:hover{background:var(--bg-secondary)}.wedding-guest-flag{cursor:pointer;-webkit-user-select:none;user-select:none;font-size:1.5rem;transition:transform .15s}.wedding-guest-flag:hover{transform:scale(1.2)}.wedding-guest-name{color:var(--text-primary);flex:1;font-size:1rem}.wedding-guest-delete{cursor:pointer;color:var(--text-muted);opacity:0;background:0 0;border:none;border-radius:4px;padding:.2rem .4rem;font-size:.9rem;transition:opacity .15s,color .15s}.wedding-guest-row:hover .wedding-guest-delete{opacity:1}.wedding-guest-delete:hover{color:var(--danger)}.wedding-invite-preview{text-align:center;border-radius:12px;flex-direction:column;justify-content:center;align-items:center;gap:.8rem;min-height:200px;padding:2rem 1.5rem;display:flex;position:relative;overflow:hidden}.wedding-invite-preview h3{margin:0;font-family:Caveat,cursive;font-size:2rem;font-weight:700}.wedding-invite-preview p{opacity:.85;margin:0;font-size:.95rem}.wedding-invite-border{pointer-events:none;border:2px dashed;border-radius:8px;position:absolute;inset:8px}.wedding-color-swatch{cursor:pointer;align-items:center;gap:.5rem;display:inline-flex}.wedding-color-swatch input[type=color]{appearance:none;border:2px solid var(--border);cursor:pointer;background:0 0;border-radius:50%;width:36px;height:36px;padding:0;overflow:hidden}.wedding-color-swatch input[type=color]::-webkit-color-swatch-wrapper{padding:0}.wedding-color-swatch input[type=color]::-webkit-color-swatch{border:none;border-radius:50%}.wedding-color-swatch input[type=color]::-moz-color-swatch{border:none;border-radius:50%}.wedding-add-btn{border:2px dashed var(--border);color:var(--text-muted);cursor:pointer;background:0 0;border-radius:10px;align-items:center;gap:.4rem;padding:.5rem 1rem;font-family:Caveat,cursive;font-size:1.1rem;font-weight:600;transition:border-color .15s,color .15s;display:inline-flex}.wedding-add-btn:hover{border-color:var(--accent);color:var(--accent)}@media (width<=600px){.wedding-page{padding:1rem .5rem}.wedding-section{padding:1.5rem 1rem 1rem}}html,body{max-width:100%;overflow-x:hidden}img,video,svg{max-width:100%;height:auto}@media (width<=768px){.container{padding:1.25rem 1rem}.card{padding:1rem}.page-title{margin-bottom:1rem;font-size:1.4rem}.page-subtitle{margin-bottom:1.25rem;font-size:.95rem}.grid{gap:1rem}.grid-2,.grid-3{grid-template-columns:1fr}}@media (width<=480px){.container{padding:1rem .75rem}.btn{padding:.55rem .9rem}}.payer-toggle-outlined img{filter:drop-shadow(1px 0 #06b6d4)drop-shadow(-1px 0 #06b6d4)drop-shadow(0 1px #06b6d4)drop-shadow(0 -1px #06b6d4);transition:filter .15s}.payer-toggle-outlined img[alt=Wombat]{filter:drop-shadow(1px 0 #ec4899)drop-shadow(-1px 0 #ec4899)drop-shadow(0 1px #ec4899)drop-shadow(0 -1px #ec4899)}.payer-toggle-outlined:hover img{filter:drop-shadow(1.5px 0 #06b6d4)drop-shadow(-1.5px 0 #06b6d4)drop-shadow(0 1.5px #06b6d4)drop-shadow(0 -1.5px #06b6d4)}.payer-toggle-outlined:hover img[alt=Wombat]{filter:drop-shadow(1.5px 0 #ec4899)drop-shadow(-1.5px 0 #ec4899)drop-shadow(0 1.5px #ec4899)drop-shadow(0 -1.5px #ec4899)}
