:root{--bg: #f5f5f5;--text: #222;--text-subtle: #888;--input-bg: rgba(255, 255, 255, .8);--input-border: #ccc;--input-border-focus: #555;--btn-bg: #222;--btn-text: #fff;--error: #d32f2f;--rsvp-yes: #4caf50;--rsvp-no: #f44336;--blob-1: rgba(255, 80, 130, .35);--blob-2: rgba(80, 130, 255, .35);--blob-3: rgba(130, 255, 80, .3);--blob-4: rgba(255, 200, 60, .3);--card-bg: rgba(255, 255, 255, .6);--card-border: rgba(0, 0, 0, .08);--card-shadow: 0 2px 12px rgba(0, 0, 0, .06);--comment-bg: rgba(255, 255, 255, .5);--reaction-bg: rgba(0, 0, 0, .05);--reaction-active: rgba(66, 133, 244, .15);--overlay-bg: rgba(0, 0, 0, .4)}[data-theme=dark]{--bg: #0e0e1a;--text: #e8e8e8;--text-subtle: #777;--input-bg: rgba(255, 255, 255, .06);--input-border: #444;--input-border-focus: #999;--btn-bg: #e8e8e8;--btn-text: #0e0e1a;--error: #ff6b6b;--blob-1: rgba(255, 50, 120, .2);--blob-2: rgba(60, 120, 255, .2);--blob-3: rgba(80, 220, 120, .15);--blob-4: rgba(255, 180, 40, .15);--card-bg: rgba(255, 255, 255, .04);--card-border: rgba(255, 255, 255, .08);--card-shadow: 0 2px 12px rgba(0, 0, 0, .3);--comment-bg: rgba(255, 255, 255, .03);--reaction-bg: rgba(255, 255, 255, .06);--reaction-active: rgba(100, 160, 255, .2);--overlay-bg: rgba(0, 0, 0, .6)}*{margin:0;padding:0;box-sizing:border-box}body{font-family:system-ui,-apple-system,sans-serif;min-height:100vh;display:flex;justify-content:center;background:var(--bg);color:var(--text);transition:background .4s,color .4s;overflow-x:hidden}#root{width:100%;max-width:1200px;padding:2rem;position:relative;z-index:1}.bg-blobs{position:fixed;inset:0;z-index:0;overflow:hidden;pointer-events:none}.blob{position:absolute;border-radius:50%;filter:blur(80px);will-change:transform}.blob-1{width:420px;height:420px;background:var(--blob-1);top:-80px;left:-60px;animation:float-1 16s ease-in-out infinite alternate}.blob-2{width:380px;height:380px;background:var(--blob-2);bottom:-60px;right:-80px;animation:float-2 19s ease-in-out infinite alternate}.blob-3{width:300px;height:300px;background:var(--blob-3);top:40%;left:50%;animation:float-3 22s ease-in-out infinite alternate}.blob-4{width:260px;height:260px;background:var(--blob-4);top:20%;right:20%;animation:float-4 18s ease-in-out infinite alternate}@keyframes float-1{0%{transform:translate(0) scale(1)}25%{transform:translate(120px,80px) scale(1.12)}50%{transform:translate(40px,220px) scale(.92)}75%{transform:translate(200px,120px) scale(1.06)}to{transform:translate(80px,300px) scale(.98)}}@keyframes float-2{0%{transform:translate(0) scale(1)}25%{transform:translate(-100px,-70px) scale(1.14)}50%{transform:translate(-180px,-180px) scale(.88)}75%{transform:translate(-40px,-240px) scale(1.08)}to{transform:translate(-140px,-100px) scale(.96)}}@keyframes float-3{0%{transform:translate(-50%,-50%) scale(1)}25%{transform:translate(-30%,-70%) scale(1.18)}50%{transform:translate(-70%,-30%) scale(.85)}75%{transform:translate(-40%,-60%) scale(1.1)}to{transform:translate(-60%,-45%) scale(.94)}}@keyframes float-4{0%{transform:translate(0) scale(1)}25%{transform:translate(-80px,100px) scale(1.1)}50%{transform:translate(60px,-80px) scale(.9)}75%{transform:translate(-40px,-40px) scale(1.16)}to{transform:translate(100px,60px) scale(.92)}}.theme-toggle{position:fixed;top:1rem;right:1rem;z-index:10;background:var(--input-bg);border:1px solid var(--input-border);border-radius:50%;width:42px;height:42px;display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--text);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);transition:background .3s,border-color .3s,transform .2s;padding:0}.theme-toggle:hover{transform:scale(1.1);border-color:var(--input-border-focus)}.code-input-page{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:80vh;text-align:center;gap:1rem}.code-input-page h1{font-size:2.2rem;font-weight:700}.code-input-page form{display:flex;flex-direction:column;align-items:center;gap:1rem}.code-boxes{display:flex;gap:.75rem}.code-box{width:56px;height:68px;font-size:2rem;text-align:center;border:2px solid var(--input-border);border-radius:10px;background:var(--input-bg);color:var(--text);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);transition:border-color .3s,background .3s}.code-box:focus{outline:none;border-color:var(--input-border-focus)}button{padding:.75rem 2rem;font-size:1rem;border:none;border-radius:8px;cursor:pointer;background:var(--btn-bg);color:var(--btn-text);transition:background .3s,color .3s,opacity .2s}button:disabled{opacity:.5;cursor:not-allowed}button:hover:not(:disabled){opacity:.85}.error{color:var(--error)}.logout-btn{position:fixed;top:1rem;left:1rem;z-index:10;background:var(--input-bg);border:1px solid var(--input-border);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);color:var(--text-subtle);font-size:.85rem;padding:.5rem 1rem;border-radius:8px}.top-section{display:grid;grid-template-columns:280px 1fr 1fr;grid-template-rows:auto auto;gap:1rem;margin-bottom:3rem;align-items:start}.top-rsvp{grid-column:1;grid-row:1 / 3}.top-details{grid-column:2 / 4;grid-row:1}.top-wishlist{grid-column:2;grid-row:2}.top-map{grid-column:3;grid-row:2}.rsvp-panel{display:flex;flex-direction:column;align-items:center;gap:1rem;position:sticky;top:2rem}.rsvp-panel h2{font-size:1.5rem;font-weight:700}.rsvp-face-container{position:relative;width:150px;height:150px;display:flex;align-items:center;justify-content:center}.rsvp-face{font-size:7rem;line-height:1;transition:transform .2s;animation:face-pop .25s ease-out}@keyframes face-pop{0%{transform:scale(.7);opacity:.5}60%{transform:scale(1.08)}to{transform:scale(1);opacity:1}}.falling-star{position:absolute;font-size:1.5rem;top:30%;animation:star-fall .8s ease-in forwards;pointer-events:none}.star-left{left:20%;animation-name:star-fall-left}.star-right{right:20%;animation-name:star-fall-right}@keyframes star-fall-left{0%{transform:translate(0) rotate(0);opacity:1}to{transform:translate(-20px,120px) rotate(-90deg);opacity:0}}@keyframes star-fall-right{0%{transform:translate(0) rotate(0);opacity:1}to{transform:translate(20px,120px) rotate(90deg);opacity:0}}.rsvp-btn{width:100%;max-width:220px;padding:.75rem 1.5rem;font-size:1rem;border-radius:12px;font-weight:600;transition:transform .15s,box-shadow .15s}.rsvp-btn:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 4px 12px #00000026;opacity:1}.rsvp-btn.yes{background:var(--rsvp-yes);color:#fff}.rsvp-btn.no{background:var(--rsvp-no);color:#fff}.rsvp-btn.active{outline:3px solid var(--text);outline-offset:2px}.event-details{background:var(--card-bg);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid var(--card-border);border-radius:14px;padding:1rem 1.25rem;box-shadow:var(--card-shadow)}.event-header{display:flex;flex-wrap:wrap;align-items:baseline;gap:.25rem 1.5rem;margin-bottom:.5rem}.event-header h1{font-size:1.5rem;margin:0}.detail-row{display:flex;align-items:center;gap:.4rem;font-size:.92rem;line-height:1.4}.detail-icon{font-size:1rem;flex-shrink:0}.party-tagline{margin-top:.5rem;font-size:1rem;font-weight:600;font-style:italic;text-align:center}.bento-stack{display:flex;flex-direction:column;gap:.5rem;margin-top:.75rem}.bento-card{background:var(--reaction-bg);border-radius:10px;padding:.6rem .75rem;display:flex;flex-direction:column;gap:.15rem}.bento-card strong{font-size:.95rem}.bento-card p{font-size:.82rem;line-height:1.35;color:var(--text)}.bento-icon{font-size:1.2rem;line-height:1}.bento-time{font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.03em;color:var(--text-subtle)}.menu-choices{background:var(--card-bg);border-radius:6px;padding:.35rem .6rem;font-size:.92rem}.paid-note{font-style:italic;font-size:.85rem;color:var(--text-subtle)}.wishlist-container{position:relative;background:var(--card-bg);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid var(--card-border);border-radius:16px;padding:1.25rem 1.5rem;display:flex;align-items:center;justify-content:center;gap:1rem;box-shadow:var(--card-shadow);height:100%}.wishlist-icon{font-size:1.5rem;flex-shrink:0}.wishlist-link{font-size:1.1rem;font-weight:600;color:var(--text);text-decoration:underline;text-underline-offset:3px}.map-container{border-radius:16px;overflow:hidden;border:1px solid var(--card-border);box-shadow:var(--card-shadow);height:100%}.map-container iframe{height:100%;min-height:200px}.calendar-prompt-overlay{position:fixed;inset:0;background:var(--overlay-bg);display:flex;align-items:center;justify-content:center;z-index:100;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.calendar-prompt{background:var(--bg);border:1px solid var(--card-border);border-radius:16px;padding:2rem;max-width:360px;text-align:center;box-shadow:0 8px 32px #0003}.calendar-prompt h3{font-size:1.3rem;margin-bottom:.5rem}.calendar-buttons{display:flex;flex-direction:column;gap:.75rem;margin:1.5rem 0 1rem}.calendar-btn{display:block;width:100%;text-align:center;text-decoration:none;padding:.75rem;border-radius:10px;font-weight:600}.calendar-btn.google{background:#4285f4;color:#fff}.calendar-dismiss{background:transparent;color:var(--text-subtle);font-size:.9rem}.confirm-overlay{position:fixed;inset:0;background:var(--overlay-bg);display:flex;align-items:center;justify-content:center;z-index:100;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.confirm-dialog{background:var(--bg);border:1px solid var(--card-border);border-radius:16px;padding:2rem;max-width:400px;text-align:center;box-shadow:0 8px 32px #0003}.confirm-dialog h3{font-size:1.3rem;margin-bottom:.75rem}.confirm-dialog p{line-height:1.5;margin-bottom:1.5rem;color:var(--text)}.confirm-actions{display:flex;gap:.75rem;justify-content:center}.confirm-btn{padding:.65rem 1.25rem;border-radius:10px;font-weight:600;font-size:.95rem}.confirm-btn.cancel{background:var(--rsvp-yes);color:#fff}.confirm-btn.confirm{background:var(--rsvp-no);color:#fff}.bottom-section{display:grid;grid-template-columns:1fr 1fr;gap:2rem;padding-top:2rem;border-top:1px solid var(--card-border)}.guest-list{background:var(--card-bg);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid var(--card-border);border-radius:16px;padding:1.5rem;box-shadow:var(--card-shadow);align-self:start}.guest-list h2{text-align:left;margin-bottom:1rem}.guest-group{margin-bottom:1rem}.guest-group-title{font-size:.85rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;margin-bottom:.4rem}.guest-group-title.coming{color:var(--rsvp-yes)}.guest-group-title.not-coming{color:var(--rsvp-no)}.guest-group-title.pending{color:var(--text-subtle)}.guest-name{font-size:1rem;font-weight:500;padding:.3rem 0}.guest-name.not-coming{text-decoration:line-through;opacity:.5}.guest-name.pending{opacity:.6}.comment-section{background:var(--card-bg);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid var(--card-border);border-radius:16px;padding:1.5rem;box-shadow:var(--card-shadow);align-self:start}.comment-section h2{margin-bottom:1rem}.comment-form{display:flex;flex-direction:column;gap:.5rem}.comment-textarea{width:100%;padding:.75rem;border:1px solid var(--input-border);border-radius:10px;background:var(--input-bg);color:var(--text);font-family:inherit;font-size:.95rem;resize:vertical;min-height:80px;transition:border-color .3s}.comment-textarea:focus{outline:none;border-color:var(--input-border-focus)}.comment-form-actions{display:flex;justify-content:space-between}.gif-toggle-btn{background:var(--reaction-bg);color:var(--text);font-weight:700;padding:.5rem 1rem;border-radius:8px;font-size:.85rem}.selected-gif-preview{position:relative;display:inline-block}.selected-gif-preview img{border-radius:8px;max-height:100px}.remove-gif{position:absolute;top:-8px;right:-8px;width:24px;height:24px;border-radius:50%;background:var(--error);color:#fff;font-size:1rem;padding:0;display:flex;align-items:center;justify-content:center}.comment-list{display:flex;flex-direction:column;gap:1rem;margin-top:1rem;max-height:500px;overflow-y:auto}.comment-item{background:var(--comment-bg);border-radius:12px;padding:1rem}.comment-header{display:flex;align-items:center;gap:.5rem;margin-bottom:.5rem}.comment-author{font-weight:700;font-size:.95rem}.comment-time{font-size:.8rem;color:var(--text-subtle)}.comment-delete{margin-left:auto;background:transparent;color:var(--text-subtle);font-size:1.2rem;padding:0;width:28px;height:28px}.comment-text{line-height:1.5;margin-bottom:.5rem}.comment-gif{max-width:200px;border-radius:8px;margin-bottom:.5rem}.no-comments{text-align:center;color:var(--text-subtle);padding:2rem 0}.reaction-bar{display:flex;flex-wrap:wrap;gap:.4rem;align-items:center}.reaction-chip{display:flex;align-items:center;gap:.25rem;padding:.25rem .6rem;border-radius:20px;background:var(--reaction-bg);color:var(--text);font-size:.85rem;cursor:pointer;border:1px solid transparent;transition:background .2s,border-color .2s}.reaction-chip.reacted{background:var(--reaction-active);border-color:var(--input-border-focus)}.add-reaction-wrapper{position:relative}.add-reaction-btn{width:30px;height:30px;border-radius:50%;background:var(--reaction-bg);color:var(--text-subtle);font-size:1rem;padding:0;display:flex;align-items:center;justify-content:center}.emoji-picker{position:absolute;bottom:100%;left:0;background:var(--bg);border:1px solid var(--card-border);border-radius:12px;padding:.5rem;display:flex;gap:.25rem;box-shadow:var(--card-shadow);z-index:10;margin-bottom:4px}.emoji-option{width:36px;height:36px;font-size:1.2rem;background:transparent;padding:0;border-radius:8px;cursor:pointer}.emoji-option:hover{background:var(--reaction-bg)}.giphy-picker{border:1px solid var(--card-border);border-radius:12px;background:var(--bg);padding:.75rem;max-height:300px;overflow-y:auto}.giphy-picker-header{display:flex;gap:.5rem;margin-bottom:.5rem}.giphy-search-input{flex:1;padding:.5rem .75rem;border:1px solid var(--input-border);border-radius:8px;background:var(--input-bg);color:var(--text);font-size:.9rem}.giphy-search-input:focus{outline:none;border-color:var(--input-border-focus)}.giphy-close{width:36px;height:36px;background:transparent;color:var(--text-subtle);font-size:1.3rem;padding:0}.giphy-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:.5rem}.giphy-thumb{width:100%;border-radius:6px;cursor:pointer;transition:transform .15s}.giphy-thumb:hover{transform:scale(1.05)}.giphy-attribution{text-align:center;font-size:.75rem;color:var(--text-subtle);margin-top:.5rem}.giphy-loading{text-align:center;color:var(--text-subtle);padding:1rem}.loading{text-align:center;padding:2rem;font-size:1.2rem;color:var(--text-subtle)}@media(max-width:768px){.top-section{grid-template-columns:1fr}.top-rsvp,.top-details,.top-wishlist,.top-map{grid-column:1;grid-row:auto}.bottom-section{grid-template-columns:1fr}.rsvp-panel{position:static}#root{max-width:100%;padding:1rem}}
