.page-wrapper{display:flex;min-height:100vh;flex-direction:column;background:linear-gradient(180deg,#f4f2ff,#fdf7ff 20%,#fff)}.hero{position:relative;padding:7rem 1.5rem 6rem;overflow:hidden}.hero__overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(circle at top left,#6f68f6 0%,transparent 55%),radial-gradient(circle at bottom right,#ff7ab6 0%,transparent 50%);opacity:.25;z-index:0}.hero__inner{position:relative;z-index:1;max-width:960px;margin:0 auto;text-align:center;color:#16192c}.hero__eyebrow{font-size:.85rem;letter-spacing:.4em;text-transform:uppercase;margin-bottom:1rem;color:#3940b5}.hero__headline{font-size:clamp(2.4rem,5vw,3.6rem);margin:0 auto 1.5rem;max-width:18ch;font-weight:700;line-height:1.1}.hero__subtext{margin:0 auto 2rem;max-width:45ch;color:#4b4f74;font-size:1.05rem}.hero__nav{display:flex;gap:1.5rem;justify-content:center;flex-wrap:wrap}.hero__nav-item{display:flex;flex-direction:column;align-items:center;gap:.5rem;padding:1.25rem 2rem;border-radius:20px;background:#ffffffe6;box-shadow:0 14px 48px #3a376e26;text-decoration:none;transition:transform .3s ease,box-shadow .3s ease}.hero__nav-item:hover{transform:translateY(-4px);box-shadow:0 20px 60px #3a376e33}.hero__nav-icon{font-size:2rem}.hero__nav-label{font-size:1rem;font-weight:600;color:#3940b5}.content{flex:1;padding:4rem 1.5rem;max-width:1040px;margin:0 auto}.alert{margin-bottom:2rem;padding:1rem 1.25rem;border-radius:12px;background:#ff63841f;color:#b42318;border:1px solid rgba(180,35,24,.35)}.anniversary{margin-bottom:4rem;padding:3rem 2rem;border-radius:24px;background:linear-gradient(135deg,#fff5f8,#fef3ff,#f5f3ff);box-shadow:0 20px 60px #ff7ab626;position:relative;overflow:hidden}.petals{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;overflow:hidden}.petal{position:absolute;top:-20px;width:14px;height:14px;background:linear-gradient(135deg,#ffb6c1,#ff69b4,#ff1493);border-radius:50% 0 50% 50%;opacity:.6;animation:fall linear infinite,sway ease-in-out infinite;transform-origin:center;will-change:transform,top}.petal:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:inherit;border-radius:inherit;transform:rotate(90deg)}@keyframes fall{0%{top:-20px}to{top:calc(100% + 20px)}}@keyframes sway{0%,to{transform:translate(0) rotate(0)}25%{transform:translate(30px) rotate(90deg)}50%{transform:translate(-10px) rotate(180deg)}75%{transform:translate(20px) rotate(270deg)}}.petal:nth-child(odd){width:10px;height:10px;opacity:.5}.petal:nth-child(3n){width:12px;height:12px;opacity:.7;background:linear-gradient(135deg,pink,#ffb6c1,#ff69b4)}.anniversary:before{content:"";position:absolute;top:-50%;right:-20%;width:400px;height:400px;background:radial-gradient(circle,rgba(255,122,182,.1) 0%,transparent 70%);pointer-events:none}.anniversary:after{content:"";position:absolute;bottom:-30%;left:-10%;width:300px;height:300px;background:radial-gradient(circle,rgba(111,104,246,.08) 0%,transparent 70%);pointer-events:none}.anniversary__header{text-align:center;margin-bottom:2.5rem;position:relative;z-index:1}.anniversary__header h2{font-size:2rem;margin:0 0 .5rem;color:#d64672;font-weight:700}.anniversary__header p{color:#7c5a8a;font-size:1.05rem;margin:0}.anniversary__counter{text-align:center;margin-bottom:3rem;position:relative;z-index:1}.anniversary__counter-inner{display:flex;justify-content:center;gap:1rem;flex-wrap:wrap;margin-bottom:1rem}.counter-item{display:flex;flex-direction:column;align-items:center;padding:1.25rem 1.5rem;background:#ffffffe6;border-radius:16px;box-shadow:0 8px 32px #d646721f;min-width:80px;transition:transform .3s ease,box-shadow .3s ease}.counter-item:hover{transform:translateY(-4px);box-shadow:0 12px 40px #d646722e}.counter-item--seconds .counter-value{color:#ff7ab6}.counter-value{font-size:2.5rem;font-weight:700;background:linear-gradient(135deg,#d64672,#6f68f6);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;line-height:1.2;font-variant-numeric:tabular-nums}.counter-label{font-size:.9rem;color:#8b7a9e;margin-top:.25rem;font-weight:500}.anniversary__total{color:#7c5a8a;font-size:1rem;margin:0}.anniversary__total strong{color:#d64672;font-weight:600}.anniversary__timeline{position:relative;z-index:1;max-width:600px;margin:0 auto}.timeline-item{display:grid;grid-template-columns:auto 24px 1fr;gap:1rem;margin-bottom:1.5rem}.timeline-item:last-child{margin-bottom:0}.timeline-icon{width:48px;height:48px;background:linear-gradient(135deg,#fff,#fef3ff);border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:1.5rem;box-shadow:0 6px 20px #d6467226;border:2px solid rgba(255,122,182,.2)}.timeline-connector{display:flex;flex-direction:column;align-items:center;padding-top:12px}.timeline-line{width:2px;flex:1;background:linear-gradient(180deg,#ff7ab6,#6f68f6);border-radius:1px;min-height:20px}.timeline-content{background:#ffffffd9;padding:1.25rem 1.5rem;border-radius:16px;box-shadow:0 8px 24px #6f68f614;border:1px solid rgba(255,122,182,.1)}.timeline-content h3{margin:0 0 .25rem;font-size:1.1rem;color:#d64672;font-weight:600}.timeline-content time{display:block;font-size:.85rem;color:#9b8ab0;margin-bottom:.5rem}.timeline-content p{margin:0;font-size:.95rem;color:#6b5a7a;line-height:1.5}.timeline-elapsed{margin-top:.75rem;padding:.5rem .75rem;background:linear-gradient(135deg,#d646721a,#6f68f61a);border-radius:8px;display:inline-block}.elapsed-time{font-size:.85rem;font-weight:600;color:#d64672;font-variant-numeric:tabular-nums}.timeline-elapsed--future{background:linear-gradient(135deg,#ffb6c133,#ffc0cb33)}.timeline-elapsed--future .elapsed-time{color:#e091a3}.timeline-item--future{opacity:.75}.timeline-item--future .timeline-icon{animation:pulse 2s ease-in-out infinite}@keyframes pulse{0%,to{transform:scale(1);box-shadow:0 6px 20px #d6467226}50%{transform:scale(1.05);box-shadow:0 8px 25px #d6467240}}.anniversary__nav{display:flex;gap:1.5rem;justify-content:center;margin-top:3rem;position:relative;z-index:1}.anniversary__nav-item{display:flex;flex-direction:column;align-items:center;gap:.5rem;padding:1.5rem 2.5rem;border-radius:20px;background:#fffffff2;box-shadow:0 12px 40px #d6467226;text-decoration:none;transition:transform .3s ease,box-shadow .3s ease;border:1px solid rgba(255,122,182,.15)}.anniversary__nav-item:hover{transform:translateY(-6px);box-shadow:0 18px 50px #d6467238}.anniversary__nav-icon{font-size:2.5rem}.anniversary__nav-label{font-size:1.15rem;font-weight:700;background:linear-gradient(135deg,#d64672,#6f68f6);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.anniversary__nav-desc{font-size:.85rem;color:#8b7a9e}@media (max-width: 600px){.anniversary__nav{flex-direction:column;gap:1rem}.anniversary__nav-item{padding:1.25rem 1.5rem}}@media (max-width: 600px){.anniversary{padding:2rem 1.25rem}.anniversary__counter-inner{gap:.5rem}.counter-item{padding:1rem;min-width:60px}.counter-value{font-size:1.8rem}.timeline-item{grid-template-columns:auto 16px 1fr;gap:.75rem}.timeline-icon{width:40px;height:40px;font-size:1.2rem}.timeline-content{padding:1rem}}.family{margin-bottom:4rem}.family__header{text-align:center;max-width:620px;margin:0 auto 2.5rem}.family__header h2{margin:0 0 .75rem;font-size:2rem;color:#222751}.family__header p{margin:0;color:#4b4f74;font-size:1rem}.family__loading{text-align:center;color:#4b4f74;margin-bottom:1.5rem}.family__grid{display:grid;gap:1.5rem;grid-template-columns:repeat(3,1fr)}@media (max-width: 768px){.family__grid{grid-template-columns:1fr}}.family-card{padding:1.75rem 1.5rem;border-radius:20px;background:linear-gradient(180deg,#fffffff5,#fff);box-shadow:0 18px 40px #5a5fd11f;text-align:center}.family-card__avatar{width:88px;height:88px;border-radius:50%;margin:0 auto 1.25rem;overflow:hidden;border:4px solid rgba(111,104,246,.25);background:#fff;display:grid;place-items:center}.family-card__avatar img{width:88px;height:88px;object-fit:cover}.family-card__role{margin:.25rem 0 1rem;color:#5a5f9d;font-size:.95rem}.family-card__interests{list-style:none;padding:0;margin:0;display:grid;gap:.5rem;color:#4b4f74;font-size:.9rem}.cta{margin-bottom:4rem}.cta__inner{padding:2.5rem 2rem;border-radius:24px;background:linear-gradient(135deg,#6f68f6,#ff7ab6);display:flex;flex-direction:column;gap:1.25rem;align-items:flex-start;color:#fff;box-shadow:0 30px 50px #6f68f633}.cta__inner h2{margin:0;font-size:clamp(1.5rem,2.5vw,2rem);font-weight:600}.cta__button{display:inline-flex;align-items:center;padding:.75rem 1.5rem;border-radius:999px;background:#ffffffe6;color:#4a2f73;font-weight:600;transition:transform .2s ease,box-shadow .2s ease}.cta__button:hover{transform:translateY(-2px);box-shadow:0 12px 30px #00000026}.footer{text-align:center;padding:2.5rem 1.5rem 3rem;color:#6b6f9d;font-size:.95rem}@media (min-width: 768px){.hero__highlights{grid-template-columns:repeat(3,minmax(0,1fr));justify-items:stretch}.hero__highlight{justify-content:center}.cta__inner{flex-direction:row;justify-content:space-between;align-items:center}}.wishes-page{min-height:100vh;padding:2rem 1.5rem;background:linear-gradient(180deg,#fff9e6,#fff5f8,#f5f3ff)}.wishes-header{text-align:center;margin-bottom:2rem}.back-link{display:inline-block;margin-bottom:1rem;color:#6f68f6;text-decoration:none;font-weight:500;transition:color .2s}.back-link:hover{color:#ff7ab6}.wishes-header h1{font-size:2.5rem;margin:0 0 .5rem;color:#d64672}.wishes-header p{color:#7c5a8a;font-size:1.1rem;margin:0}.wish-form{max-width:500px;margin:0 auto 3rem;display:flex;flex-direction:column;gap:1rem}.wish-form input,.wish-form textarea{padding:1rem;border:2px solid rgba(111,104,246,.2);border-radius:12px;font-size:1rem;background:#ffffffe6;transition:border-color .2s,box-shadow .2s}.wish-form input:focus,.wish-form textarea:focus{outline:none;border-color:#ff7ab6;box-shadow:0 0 0 3px #ff7ab61a}.wish-form textarea{resize:vertical;min-height:100px}.wish-form button{padding:1rem 2rem;border:none;border-radius:12px;background:linear-gradient(135deg,#6f68f6,#ff7ab6);color:#fff;font-size:1.1rem;font-weight:600;cursor:pointer;transition:transform .2s,box-shadow .2s}.wish-form button:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 10px 30px #6f68f64d}.wish-form button:disabled{opacity:.7;cursor:not-allowed}.wishes-wall{max-width:900px;margin:0 auto;display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1.5rem}.no-wishes{grid-column:1 / -1;text-align:center;color:#9b8ab0;font-size:1.1rem;padding:3rem}.wish-card{padding:1.5rem;background:#ffffffe6;border-radius:16px;box-shadow:0 8px 32px #d646721a;border:1px solid rgba(255,122,182,.1);transition:transform .3s,box-shadow .3s;position:relative}.wish-card:hover{transform:translateY(-4px);box-shadow:0 12px 40px #d6467226}.wish-card--completed{background:linear-gradient(135deg,#e8ffe8e6,#dcfff0e6);border-color:#48bb7833}.wish-card--completed .wish-content{color:#2d6a4f}.wish-actions{position:absolute;top:.75rem;right:.75rem;display:flex;gap:.5rem;opacity:0;transition:opacity .2s}.wish-card:hover .wish-actions{opacity:1}.wish-action-btn{width:28px;height:28px;border:none;border-radius:50%;cursor:pointer;font-size:1rem;display:flex;align-items:center;justify-content:center;transition:transform .2s,background .2s}.wish-action-btn:hover{transform:scale(1.1)}.wish-action-btn--complete{background:#48bb7826;color:#48bb78}.wish-action-btn--complete:hover{background:#48bb7840}.wish-action-btn--complete.active{background:#48bb78;color:#fff}.wish-action-btn--delete{background:#f5656526;color:#f56565}.wish-action-btn--delete:hover{background:#f5656540}.wish-completed-badge{display:inline-block;background:linear-gradient(135deg,#48bb78,#38a169);color:#fff;font-size:.75rem;padding:.25rem .5rem;border-radius:8px;margin-right:.5rem;font-weight:600}.wish-content{font-size:1.05rem;color:#4a3f5c;line-height:1.6;margin-bottom:1rem;word-break:break-word}.wish-footer{display:flex;justify-content:space-between;align-items:center;font-size:.9rem}.wish-author{color:#d64672;font-weight:500}.wish-date{color:#9b8ab0}.game-page{min-height:100vh;padding:2rem 1.5rem;background:linear-gradient(180deg,#e8f4e8,#f5f3ff,#fff5f8)}.game-header{text-align:center;margin-bottom:1.5rem}.game-header h1{font-size:2.5rem;margin:0 0 .5rem;color:#3940b5}.game-header p{color:#5a5f9d;font-size:1.1rem;margin:0}.game-status{display:flex;flex-direction:column;align-items:center;gap:1rem;margin-bottom:1.5rem}.current-turn{font-size:1.3rem;font-weight:600;color:#4a3f5c}.winner-announcement{font-size:1.5rem;font-weight:700;color:#d64672;animation:bounce .5s ease infinite alternate}@keyframes bounce{0%{transform:scale(1)}to{transform:scale(1.05)}}.reset-btn{padding:.75rem 1.5rem;border:none;border-radius:12px;background:linear-gradient(135deg,#6f68f6,#ff7ab6);color:#fff;font-size:1rem;font-weight:600;cursor:pointer;transition:transform .2s,box-shadow .2s}.reset-btn:hover{transform:translateY(-2px);box-shadow:0 8px 24px #6f68f64d}.board-container{display:flex;justify-content:center;overflow-x:auto;padding:1rem}.board{display:inline-block;padding:10px;background:#dcb35c;border-radius:8px;box-shadow:0 10px 40px #0003}.board-row{display:flex}.cell{width:32px;height:32px;position:relative;cursor:pointer}.cell:before,.cell:after{content:"";position:absolute;background:#a08040}.cell:before{width:100%;height:1px;top:50%;left:0}.cell:after{width:1px;height:100%;left:50%;top:0}.cell.hoverable:hover:before{background:#6f68f6;height:2px}.cell.hoverable:hover:after{background:#6f68f6;width:2px}.stone{position:absolute;width:28px;height:28px;border-radius:50%;top:50%;left:50%;transform:translate(-50%,-50%);z-index:1;transition:transform .1s}.stone.black{background:radial-gradient(circle at 30% 30%,#555,#000);box-shadow:2px 2px 4px #0006}.stone.white{background:radial-gradient(circle at 30% 30%,#fff,#ccc);box-shadow:2px 2px 4px #0000004d}@media (max-width: 600px){.cell{width:24px;height:24px}.stone{width:20px;height:20px}.game-header h1{font-size:2rem}}:root{font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;line-height:1.5;font-weight:400;color:#101828;background-color:#f7f8fc;color-scheme:light}*{box-sizing:border-box}body{margin:0;min-height:100vh}a{color:inherit;text-decoration:none}img{max-width:100%;display:block}
