:root{--gift-pink: #ff6b9a;--gift-pink-light: #ffb3c6;--gift-purple: #c7b9ff;--gift-purple-dark: #9b8cdb;--gift-blue: #6be4ff;--gift-green: #6bffb3;--gift-bg: #0f0f23;--gift-card: #1a1a2e;--gift-card-hover: #22223a;--gift-border: rgba(255, 255, 255, .08);--gift-text: #ffffff;--gift-text-dim: #a0a0b8;--gift-radius: 16px;--gift-transition: .3s cubic-bezier(.4, 0, .2, 1)}.gift-page{min-height:100vh;background:linear-gradient(135deg,var(--gift-bg) 0%,#1a1a3e 50%,#0f0f23 100%);color:var(--gift-text);overflow-x:hidden}.gift-content{animation:giftContentIn .8s ease-out}@keyframes giftContentIn{0%{opacity:0;transform:translateY(40px)}to{opacity:1;transform:translateY(0)}}.section-title{font-size:2rem;font-weight:700;text-align:center;margin-bottom:.5rem;background:linear-gradient(135deg,var(--gift-pink) 0%,var(--gift-purple) 100%);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}.section-subtitle{text-align:center;color:var(--gift-text-dim);font-size:1.05rem;margin-bottom:2.5rem;max-width:500px;margin-left:auto;margin-right:auto}.gift-intro{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2rem;padding:2rem;position:relative}.gift-intro--revealed{min-height:100vh;padding:2rem}.gift-box{position:relative;width:180px;height:180px}.gift-box__base{width:180px;height:120px;background:linear-gradient(135deg,var(--gift-pink) 0%,#e84d7a 100%);border-radius:12px;position:absolute;bottom:0;box-shadow:0 20px 60px #ff6b9a4d;overflow:hidden}.gift-box__lid{width:200px;height:50px;background:linear-gradient(135deg,#ff7eaa 0%,var(--gift-pink) 100%);border-radius:12px;position:absolute;top:10px;left:-10px;z-index:2;transition:all .8s cubic-bezier(.34,1.56,.64,1);transform-origin:left bottom;box-shadow:0 8px 20px #ff6b9a33}.gift-box__ribbon-top,.gift-box__ribbon-v{position:absolute;width:24px;height:100%;background:linear-gradient(180deg,var(--gift-purple) 0%,var(--gift-purple-dark) 100%);left:50%;transform:translate(-50%)}.gift-box__ribbon-h{position:absolute;width:100%;height:24px;background:linear-gradient(90deg,var(--gift-purple) 0%,var(--gift-purple-dark) 100%);top:50%;transform:translateY(-50%)}.gift-box__glow{position:absolute;top:50%;left:50%;width:300px;height:300px;transform:translate(-50%,-50%);background:radial-gradient(circle,rgba(255,107,154,.4) 0%,transparent 70%);pointer-events:none;animation:glowPulse 2s ease-in-out infinite}@keyframes glowPulse{0%,to{opacity:.5;transform:translate(-50%,-50%) scale(1)}50%{opacity:.8;transform:translate(-50%,-50%) scale(1.15)}}.gift-box--opening .gift-box__lid{transform:rotate(-120deg) translateY(-40px);opacity:0}.gift-box--opening .gift-box__base{animation:boxShake .4s ease-in-out,boxFade 1.2s ease-out .4s forwards}.gift-box--opening .gift-box__glow{animation:glowBurst 1.2s ease-out forwards}@keyframes boxShake{0%,to{transform:translate(0)}20%{transform:translate(-6px) rotate(-2deg)}40%{transform:translate(6px) rotate(2deg)}60%{transform:translate(-4px) rotate(-1deg)}80%{transform:translate(4px) rotate(1deg)}}@keyframes boxFade{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.8)}}@keyframes glowBurst{0%{transform:translate(-50%,-50%) scale(1);opacity:.8}50%{transform:translate(-50%,-50%) scale(2.5);opacity:1}to{transform:translate(-50%,-50%) scale(3);opacity:0}}.gift-intro__unwrap-btn{padding:1rem 2.5rem;font-size:1.2rem;font-weight:600;border:none;border-radius:50px;cursor:pointer;background:linear-gradient(135deg,var(--gift-pink) 0%,#e84d7a 100%);color:#fff;box-shadow:0 8px 30px #ff6b9a66;transition:all var(--gift-transition);font-family:inherit;animation:btnFloat 3s ease-in-out infinite;position:relative;z-index:3}.gift-intro__unwrap-btn:hover{transform:translateY(-3px) scale(1.05);box-shadow:0 12px 40px #ff6b9a80}@keyframes btnFloat{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}.gift-intro__message{text-align:center;max-width:600px;padding:3rem 2rem;opacity:0;transform:translateY(30px);transition:all .8s cubic-bezier(.4,0,.2,1)}.gift-intro__message--visible{opacity:1;transform:translateY(0)}.gift-intro__icon{font-size:4rem;display:block;margin-bottom:1.5rem;animation:iconBounce 1s ease-out}@keyframes iconBounce{0%{transform:scale(0) rotate(-20deg)}60%{transform:scale(1.2) rotate(5deg)}to{transform:scale(1) rotate(0)}}.gift-intro__title{font-size:2.5rem;font-weight:700;margin-bottom:1.5rem;background:linear-gradient(135deg,var(--gift-pink) 0%,var(--gift-pink-light) 50%,var(--gift-purple) 100%);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;line-height:1.2}.gift-intro__text{font-size:1.1rem;line-height:1.6;color:var(--gift-text-dim);margin-bottom:1rem}.gift-intro__text--highlight{color:var(--gift-text);font-size:1.15rem;padding:1rem 1.5rem;background:#ff6b9a14;border-radius:12px;border:1px solid rgba(255,107,154,.15);margin-bottom:2rem}.gift-intro__cta{padding:1rem 2.5rem;font-size:1.15rem;font-weight:600;border:none;border-radius:50px;cursor:pointer;background:linear-gradient(135deg,var(--gift-pink) 0%,var(--gift-purple) 100%);color:#fff;box-shadow:0 8px 30px #ff6b9a4d;transition:all var(--gift-transition);font-family:inherit}.gift-intro__cta:hover{transform:translateY(-3px);box-shadow:0 12px 40px #ff6b9a66}.learning-path{padding:4rem 2rem;max-width:700px;margin:0 auto}.learning-path__timeline{position:relative;padding-left:3rem}.learning-path__line{position:absolute;left:20px;top:0;bottom:0;width:3px;background:linear-gradient(180deg,var(--gift-pink) 0%,var(--gift-purple) 50%,var(--gift-blue) 100%);border-radius:3px;opacity:.4}.learning-path__step{display:flex;align-items:flex-start;gap:1rem;margin-bottom:2rem;position:relative;opacity:0;transform:translate(-20px);transition:all .5s cubic-bezier(.4,0,.2,1)}.learning-path__step--visible{opacity:1;transform:translate(0)}.learning-path__dot{width:42px;height:42px;border-radius:50%;background:var(--gift-card);border:3px solid var(--gift-pink);display:flex;align-items:center;justify-content:center;flex-shrink:0;position:relative;z-index:1;box-shadow:0 0 20px #ff6b9a33}.learning-path__dot-icon{font-size:1.1rem}.learning-path__content{padding-top:.25rem}.learning-path__label{font-size:1.1rem;font-weight:600;margin-bottom:.15rem;color:var(--gift-text)}.learning-path__desc{font-size:.9rem;color:var(--gift-text-dim)}.tutorials-section{padding:4rem 2rem;max-width:800px;margin:0 auto}.tutorials-list{display:flex;flex-direction:column;gap:1rem}.tuto-card{background:var(--gift-card);border-radius:var(--gift-radius);border:1px solid var(--gift-border);overflow:hidden;transition:all var(--gift-transition)}.tuto-card:hover{border-color:#ff6b9a33}.tuto-card--open{border-color:#ff6b9a4d;box-shadow:0 8px 40px #0000004d}.tuto-card__header{width:100%;display:flex;align-items:center;gap:1rem;padding:1.25rem 1.5rem;border:none;background:none;color:var(--gift-text);cursor:pointer;font-family:inherit;text-align:left;transition:background var(--gift-transition)}.tuto-card__header:hover{background:var(--gift-card-hover)}.tuto-card__emoji{font-size:2rem;flex-shrink:0}.tuto-card__header-text{flex:1;min-width:0}.tuto-card__title{font-size:1.15rem;font-weight:600}.tuto-card__subtitle{font-size:.85rem;color:var(--gift-text-dim);margin-top:.15rem}.tuto-card__meta{display:flex;align-items:center;gap:.5rem;flex-shrink:0}.tuto-card__level{font-size:.75rem;font-weight:600;padding:.25rem .75rem;border-radius:50px;color:var(--gift-bg);white-space:nowrap}.tuto-card__progress{font-size:.8rem;font-weight:700;color:var(--gift-green)}.tuto-card__chevron{font-size:.9rem;color:var(--gift-text-dim);transition:transform var(--gift-transition);flex-shrink:0}.tuto-card__chevron--open{transform:rotate(90deg)}.tuto-card__body{padding:0 1.5rem 1.5rem;animation:slideDown .3s ease-out}@keyframes slideDown{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.tuto-card__goal{font-size:.95rem;color:var(--gift-text-dim);margin-bottom:1rem;padding:.75rem 1rem;background:#ffffff08;border-radius:10px;border-left:3px solid var(--gift-pink)}.tuto-card__progress-bar{height:4px;background:#ffffff0f;border-radius:4px;overflow:hidden;margin-bottom:1.25rem}.tuto-card__progress-fill{height:100%;background:linear-gradient(90deg,var(--gift-pink),var(--gift-green));border-radius:4px;transition:width .5s ease}.tuto-card__tabs{display:flex;gap:.25rem;margin-bottom:1.25rem;background:#ffffff08;border-radius:10px;padding:.25rem}.tuto-card__tab{flex:1;padding:.5rem .75rem;font-size:.85rem;font-weight:500;border:none;background:none;color:var(--gift-text-dim);cursor:pointer;border-radius:8px;transition:all var(--gift-transition);font-family:inherit}.tuto-card__tab:hover{color:var(--gift-text);background:#ffffff0d}.tuto-card__tab--active{background:#ff6b9a26;color:var(--gift-pink)}.tuto-card__tab-content{animation:tabFade .25s ease-out}@keyframes tabFade{0%{opacity:0}to{opacity:1}}.tuto-card__steps{list-style:none;padding:0;display:flex;flex-direction:column;gap:.5rem}.tuto-card__step{display:flex;align-items:flex-start;gap:.75rem;padding:.75rem;border-radius:10px;transition:all var(--gift-transition);background:#ffffff05}.tuto-card__step:hover{background:#ffffff0a}.tuto-card__step--done{opacity:.5}.tuto-card__step--done .tuto-card__step-text{text-decoration:line-through}.tuto-card__step-check{width:28px;height:28px;border-radius:50%;border:2px solid rgba(255,255,255,.15);background:none;color:var(--gift-text-dim);font-size:.75rem;font-weight:600;cursor:pointer;flex-shrink:0;display:flex;align-items:center;justify-content:center;transition:all var(--gift-transition);font-family:inherit}.tuto-card__step--done .tuto-card__step-check{background:var(--gift-green);border-color:var(--gift-green);color:var(--gift-bg)}.tuto-card__step-check:hover{border-color:var(--gift-pink);transform:scale(1.1)}.tuto-card__step-text{font-size:.92rem;line-height:1.5;flex:1;color:var(--gift-text)}.tuto-card__step-stitch{font-size:.7rem;font-weight:600;padding:.15rem .5rem;border-radius:50px;background:#c7b9ff26;color:var(--gift-purple);align-self:center;flex-shrink:0}.tuto-card__diagram{background:#0000004d;border-radius:12px;padding:1.5rem;border:1px solid var(--gift-border)}.tuto-card__diagram-pre{font-family:Courier New,Courier,monospace;font-size:.85rem;line-height:1.8;color:var(--gift-purple);overflow-x:auto;white-space:pre}.tuto-card__diagram-legend{margin-top:1rem;font-size:.8rem;color:var(--gift-text-dim);text-align:center;padding-top:.75rem;border-top:1px solid var(--gift-border)}.tuto-card__tips{list-style:none;padding:0;display:flex;flex-direction:column;gap:.75rem}.tuto-card__tip{display:flex;align-items:flex-start;gap:.75rem;font-size:.92rem;line-height:1.5;color:var(--gift-text-dim);padding:.5rem 0}.tuto-card__tip-icon{flex-shrink:0}.tuto-card__tip--variant{color:var(--gift-text);margin-top:.5rem}.tuto-card__tip--variant-item{padding-left:2.25rem;color:var(--gift-text-dim)}.tuto-card__materials{list-style:none;padding:0;display:flex;flex-direction:column;gap:.75rem}.tuto-card__material{font-size:.95rem;padding:.75rem 1rem;background:#ffffff08;border-radius:10px;border:1px solid var(--gift-border)}.tuto-card__video{display:flex;flex-direction:column;gap:.75rem}.tuto-card__video-wrapper{position:relative;width:100%;padding-bottom:56.25%;border-radius:12px;overflow:hidden;background:#0006;border:1px solid var(--gift-border)}.tuto-card__video-wrapper iframe{position:absolute;top:0;left:0;width:100%;height:100%;border:none}.tuto-card__video-caption{text-align:center;font-size:.85rem;color:var(--gift-text-dim);line-height:1.4}.stitch-diagram{background:#0000004d;border-radius:12px;padding:1.25rem;border:1px solid var(--gift-border)}.stitch-diagram__canvas{overflow-x:auto;padding-bottom:.5rem;-webkit-overflow-scrolling:touch}.stitch-diagram__svg{display:block;width:100%;max-height:300px;min-height:100px}.stitch-diagram__label{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}.stitch-diagram__tooltip{text-align:center;font-size:.85rem;color:var(--gift-text);padding:.5rem .75rem;margin-top:.5rem;background:#ff6b9a1a;border-radius:8px;border:1px solid rgba(255,107,154,.15);animation:tabFade .15s ease-out}.stitch-diagram__legend{display:flex;flex-wrap:wrap;gap:.75rem;justify-content:center;margin-top:1rem;padding-top:.75rem;border-top:1px solid var(--gift-border)}.stitch-diagram__legend-item{display:flex;align-items:center;gap:.3rem;font-size:.78rem;font-weight:600}.stitch-diagram__legend-item svg{flex-shrink:0}.vocab{padding:4rem 2rem;max-width:800px;margin:0 auto}.vocab__controls{display:flex;gap:1rem;margin-bottom:1.5rem;flex-wrap:wrap;align-items:center;justify-content:center}.vocab__lang-toggle{display:flex;gap:.25rem;background:#ffffff08;border-radius:10px;padding:.25rem}.vocab__lang-btn{padding:.5rem 1rem;font-size:.9rem;font-weight:500;border:none;background:none;color:var(--gift-text-dim);cursor:pointer;border-radius:8px;transition:all var(--gift-transition);font-family:inherit}.vocab__lang-btn:hover{color:var(--gift-text)}.vocab__lang-btn--active{background:#ff6b9a26;color:var(--gift-pink)}.vocab__search{padding:.5rem 1rem;font-size:.9rem;border:1px solid var(--gift-border);background:#ffffff08;color:var(--gift-text);border-radius:10px;font-family:inherit;transition:border-color var(--gift-transition);width:200px}.vocab__search::placeholder{color:var(--gift-text-dim)}.vocab__search:focus{outline:none;border-color:var(--gift-pink)}.vocab__table-wrap{overflow-x:auto;border-radius:var(--gift-radius);border:1px solid var(--gift-border)}.vocab__table{width:100%;border-collapse:collapse;font-size:.9rem}.vocab__table thead{background:#ffffff0a}.vocab__table th{padding:.875rem 1rem;text-align:left;font-weight:600;font-size:.8rem;text-transform:uppercase;letter-spacing:.05em;color:var(--gift-text-dim);border-bottom:1px solid var(--gift-border)}.vocab__row{transition:background var(--gift-transition)}.vocab__row:hover{background:#ffffff08}.vocab__table td{padding:.75rem 1rem;border-bottom:1px solid var(--gift-border);vertical-align:top}.vocab__abbr{font-weight:700;color:var(--gift-pink);font-family:Courier New,Courier,monospace;font-size:1rem}.vocab__full{color:var(--gift-text)}.vocab__equiv{color:var(--gift-purple);font-size:.85rem}.vocab__desc{color:var(--gift-text-dim);font-size:.85rem}.vocab__warning{margin-top:1.5rem;text-align:center;font-size:.85rem;color:var(--gift-text-dim);padding:.75rem;background:#ff6b9a0d;border-radius:10px;border:1px solid rgba(255,107,154,.1)}.material-guide{padding:4rem 2rem;max-width:800px;margin:0 auto}.material-guide__kits{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:1.5rem;margin-bottom:3rem}.kit-card{background:var(--gift-card);border-radius:var(--gift-radius);border:1px solid var(--gift-border);overflow:hidden}.kit-card__header{padding:1.25rem 1.5rem .75rem}.kit-card__title{font-size:1.15rem;font-weight:600;margin-bottom:.15rem}.kit-card__subtitle{font-size:.85rem;color:var(--gift-text-dim)}.kit-card__progress{display:flex;align-items:center;gap:.75rem;margin-top:.75rem}.kit-card__progress-bar{flex:1;height:4px;background:#ffffff0f;border-radius:4px;overflow:hidden}.kit-card__progress-fill{height:100%;background:linear-gradient(90deg,var(--gift-pink),var(--gift-green));border-radius:4px;transition:width .5s ease}.kit-card__progress-label{font-size:.8rem;font-weight:700;color:var(--gift-green)}.kit-card__items{list-style:none;padding:.5rem 0;margin:0}.kit-card__item{display:flex;align-items:center;gap:.75rem;padding:.75rem 1.5rem;cursor:pointer;transition:all var(--gift-transition);-webkit-user-select:none;user-select:none}.kit-card__item:hover{background:var(--gift-card-hover)}.kit-card__item--checked{opacity:.5}.kit-card__check{width:22px;height:22px;border-radius:6px;border:2px solid rgba(255,255,255,.15);display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:.7rem;transition:all var(--gift-transition)}.kit-card__item--checked .kit-card__check{background:var(--gift-green);border-color:var(--gift-green);color:var(--gift-bg)}.kit-card__icon{font-size:1.25rem;flex-shrink:0}.kit-card__item-content{display:flex;flex-direction:column;min-width:0}.kit-card__item-name{font-size:.92rem;font-weight:500}.kit-card__item-tip{font-size:.78rem;color:var(--gift-text-dim)}.material-guide__sub-title{font-size:1.3rem;font-weight:600;margin-bottom:1.25rem;color:var(--gift-text)}.material-guide__yarn-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:1rem;margin-bottom:2rem}.yarn-card{background:var(--gift-card);border-radius:var(--gift-radius);border:1px solid var(--gift-border);padding:1.25rem;position:relative;transition:all var(--gift-transition)}.yarn-card:hover{border-color:#ffffff26;transform:translateY(-2px)}.yarn-card--recommended{border-color:#6bffb333}.yarn-card__badge{position:absolute;top:-8px;right:12px;font-size:.7rem;font-weight:600;padding:.2rem .6rem;background:var(--gift-green);color:var(--gift-bg);border-radius:50px}.yarn-card__type{font-size:1rem;font-weight:600;margin-bottom:.25rem}.yarn-card__ideal{font-size:.82rem;color:var(--gift-text-dim);margin-bottom:.75rem}.yarn-card__details{display:flex;flex-direction:column;gap:.35rem;font-size:.8rem}.yarn-card__pro{color:var(--gift-green)}.yarn-card__con{color:#ffb86b}.yarn-card__price{color:var(--gift-text-dim);font-weight:500}.material-guide__toggle{width:100%;display:flex;align-items:center;justify-content:center;gap:.5rem;padding:1rem;font-size:1rem;font-weight:500;border:1px solid var(--gift-border);background:#ffffff05;color:var(--gift-text);cursor:pointer;border-radius:var(--gift-radius);transition:all var(--gift-transition);font-family:inherit;margin-bottom:1rem}.material-guide__toggle:hover{border-color:var(--gift-pink);background:#ff6b9a0d}.material-guide__toggle-icon{transition:transform var(--gift-transition);font-size:.8rem}.material-guide__toggle-icon--open{transform:rotate(90deg)}.mistakes-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1rem;animation:slideDown .3s ease-out}.mistake-card{background:var(--gift-card);border-radius:12px;border:1px solid var(--gift-border);padding:1rem;display:flex;flex-direction:column;gap:.5rem}.mistake-card__problem{display:flex;align-items:center;gap:.5rem;font-size:.9rem;color:#ff6b6b}.mistake-card__fix{display:flex;align-items:flex-start;gap:.5rem;font-size:.85rem;color:var(--gift-green);line-height:1.4}.mistake-card__icon{flex-shrink:0}.crochet-term-wrap{position:relative;display:inline}.crochet-term{color:var(--gift-pink);text-decoration:underline;text-decoration-style:dotted;text-decoration-color:#ff6b9a66;text-underline-offset:3px;cursor:help;transition:color var(--gift-transition),text-decoration-color var(--gift-transition);border-radius:2px}.crochet-term:hover,.crochet-term:focus-visible{color:#ffb3d0;text-decoration-color:#ff6b9acc;outline:none}.crochet-tooltip{position:absolute;bottom:calc(100% + 8px);left:50%;transform:translate(-50%);z-index:100;background:var(--gift-card);border:1px solid var(--gift-pink);border-radius:10px;padding:.6rem .85rem;min-width:180px;max-width:280px;width:max-content;box-shadow:0 8px 32px #0006,0 0 12px #ff6b9a26;display:flex;flex-direction:column;gap:.25rem;animation:tooltipIn .2s ease-out;pointer-events:auto}.crochet-tooltip:after{content:"";position:absolute;top:100%;left:50%;transform:translate(-50%);border:6px solid transparent;border-top-color:var(--gift-pink)}.crochet-tooltip__term{font-weight:700;font-size:.85rem;color:var(--gift-pink)}.crochet-tooltip__def{font-size:.8rem;color:var(--gift-text-dim);line-height:1.4}@keyframes tooltipIn{0%{opacity:0;transform:translate(-50%) translateY(4px)}to{opacity:1;transform:translate(-50%) translateY(0)}}.gift-footer{padding:4rem 2rem;text-align:center}.gift-footer__text{font-size:1.1rem;color:var(--gift-text-dim)}@media (max-width: 640px){.section-title{font-size:1.6rem}.gift-intro__title{font-size:1.8rem}.gift-intro__text{font-size:1rem}.gift-box{width:140px;height:140px}.gift-box__base{width:140px;height:95px}.gift-box__lid{width:156px;height:40px;left:-8px}.tuto-card__header{padding:1rem;gap:.75rem}.tuto-card__emoji{font-size:1.5rem}.tuto-card__meta{flex-direction:column;align-items:flex-end;gap:.25rem}.tuto-card__body{padding:0 1rem 1rem}.tuto-card__tabs{overflow-x:auto}.tuto-card__tab{font-size:.78rem;padding:.4rem .5rem;white-space:nowrap}.learning-path__timeline{padding-left:2.5rem}.material-guide__kits,.material-guide__yarn-grid{grid-template-columns:1fr}.vocab__controls{flex-direction:column;align-items:stretch}.vocab__search{width:100%}.vocab__table{font-size:.8rem}.vocab__table th,.vocab__table td{padding:.6rem .5rem}.crochet-tooltip{min-width:150px;max-width:220px;padding:.5rem .7rem;font-size:.85rem}}@media (prefers-reduced-motion: reduce){.gift-content,.gift-intro__message,.learning-path__step,.tuto-card__body,.tuto-card__tab-content,.mistakes-grid{animation:none;opacity:1;transform:none}.gift-box__glow,.gift-intro__unwrap-btn,.gift-intro__icon,.crochet-tooltip{animation:none}}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--primary: #ff6b9a;--primary-light: #ffb3c6;--primary-dark: #e84d7a;--secondary: #c7b9ff;--bg-dark: #0f0f23;--bg-card: #1a1a2e;--text-primary: #ffffff;--text-secondary: #e0e0e0;--text-muted: #a0a0a0;--shadow: rgba(255, 107, 154, .3);--glow: rgba(255, 107, 154, .6);--border-radius: 20px;--transition-speed: .3s}html,body{height:100%;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:linear-gradient(135deg,var(--bg-dark) 0%,#1a1a3e 100%);color:var(--text-primary);overflow-x:hidden;overflow-y:auto}#root{height:100%}.app{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px;position:relative}.confetti{position:fixed;top:0;left:0;width:100vw;height:100vh;pointer-events:none;z-index:9999;opacity:0;transition:opacity .3s ease}.confetti-active{opacity:1}.toast-stack{position:fixed;top:20px;right:20px;left:auto;display:flex;flex-direction:column;gap:.75rem;z-index:10000;pointer-events:none}.toast{max-width:320px;padding:.875rem 1rem;background:#0f0f23d9;color:var(--text-primary);border:1px solid rgba(255,255,255,.15);border-radius:14px;box-shadow:0 12px 28px #00000059;font-size:.95rem;line-height:1.4;animation:toastIn .25s ease-out;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}@media (max-width: 640px){.toast-stack{left:16px;right:16px;top:12px}.toast{max-width:none}}@keyframes toastIn{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.valentine-card{position:relative;max-width:600px;width:100%;background:var(--bg-card);border-radius:var(--border-radius);padding:3rem 2rem;box-shadow:0 20px 60px #00000080,0 0 40px var(--shadow);animation:fadeInUp .6s ease-out;z-index:1}@keyframes fadeInUp{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}.glow{position:absolute;top:-50%;left:-50%;width:200%;height:200%;background:radial-gradient(circle,var(--glow) 0%,transparent 70%);opacity:.3;animation:pulse 4s ease-in-out infinite;pointer-events:none}@keyframes pulse{0%,to{opacity:.3;transform:scale(1)}50%{opacity:.5;transform:scale(1.1)}}.card-content{position:relative;z-index:2;text-align:center}.badge{display:inline-block;padding:.5rem 1rem;background:linear-gradient(135deg,var(--primary) 0%,var(--secondary) 100%);border-radius:50px;font-size:.875rem;font-weight:600;margin-bottom:1.5rem;animation:fadeIn .6s ease-out .2s both}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.title{font-size:2.5rem;font-weight:700;margin-bottom:1rem;background:linear-gradient(135deg,var(--primary) 0%,var(--primary-light) 50%,var(--secondary) 100%);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;animation:fadeIn .6s ease-out .4s both;line-height:1.2}.subtitle{font-size:1.125rem;color:var(--text-secondary);margin-bottom:2rem;animation:fadeIn .6s ease-out .6s both}.button-row{display:flex;gap:1rem;justify-content:center;align-items:center;flex-wrap:wrap;margin-top:2rem;position:relative;min-height:60px;animation:fadeInScale .5s ease-out}@keyframes fadeInScale{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}.cta-button{padding:.875rem 2rem;font-size:1.125rem;font-weight:600;border:none;border-radius:50px;cursor:pointer;transition:all var(--transition-speed) ease;position:relative;overflow:hidden;font-family:inherit;min-width:120px}.cta-button:focus-visible{outline:3px solid var(--primary);outline-offset:4px}.cta-button:before{content:"";position:absolute;top:50%;left:50%;width:0;height:0;border-radius:50%;background:#fff3;transform:translate(-50%,-50%);transition:width .6s ease,height .6s ease}.cta-button:hover:before{width:300px;height:300px}.yes{background:linear-gradient(135deg,var(--primary) 0%,var(--primary-dark) 100%);color:#fff;box-shadow:0 8px 20px var(--shadow);transform-origin:center}.yes:hover{box-shadow:0 12px 30px var(--shadow);transform:translateY(-2px)}.yes:active{transform:translateY(0)}.no{background:#ffffff1a;color:var(--text-secondary);border:2px solid rgba(255,255,255,.2);transition:transform .15s ease-out;will-change:transform}.no:hover{background:#ffffff26;border-color:#ffffff4d}.confirm-panel{animation:fadeInScale .6s ease-out;margin-top:1rem}.confirm-title{font-size:2rem;font-weight:700;margin-bottom:.5rem;color:var(--primary)}.confirm-subtitle{font-size:1rem;color:var(--text-muted);margin-bottom:2rem}.details-card{background:#ffffff0d;border-radius:16px;padding:1.5rem;margin-bottom:1.5rem;border:1px solid rgba(255,255,255,.1)}.detail-item{display:flex;align-items:flex-start;gap:1rem;padding:1rem 0}.detail-item:not(:last-child){border-bottom:1px solid rgba(255,255,255,.1)}.detail-icon{font-size:1.5rem;flex-shrink:0}.detail-content{flex:1;text-align:left}.detail-label{font-size:.875rem;color:var(--text-muted);margin-bottom:.25rem}.detail-value{font-size:1rem;color:var(--text-primary);font-weight:500}.action-buttons{display:flex;flex-direction:column;gap:.75rem}.action-button{padding:.875rem 1.5rem;font-size:1rem;font-weight:600;border:none;border-radius:12px;cursor:pointer;transition:all var(--transition-speed) ease;font-family:inherit;position:relative;overflow:hidden}.action-button:focus-visible{outline:3px solid var(--primary);outline-offset:2px}.copy-button{background:linear-gradient(135deg,var(--primary) 0%,var(--primary-dark) 100%);color:#fff;box-shadow:0 4px 12px var(--shadow)}.copy-button:hover{box-shadow:0 6px 16px var(--shadow);transform:translateY(-2px)}.calendar-button{background:#ffffff1a;color:var(--text-primary);border:2px solid rgba(255,255,255,.2)}.calendar-button:hover{background:#ffffff26;border-color:#ffffff4d;transform:translateY(-2px)}.action-button:active{transform:translateY(0)}@media (max-width: 640px){.valentine-card{padding:2rem 1.5rem}.title{font-size:2rem}.subtitle{font-size:1rem}.cta-button{padding:.75rem 1.5rem;font-size:1rem;min-width:100px}.button-row{gap:.75rem}.confirm-title{font-size:1.75rem}.details-card{padding:1.25rem}}@media (max-width: 400px){.title{font-size:1.75rem}.cta-button{padding:.625rem 1.25rem;font-size:.9375rem;min-width:90px}}.gift-reveal{text-align:center;animation:fadeInScale .6s ease-out;margin-top:1rem}.gift-reveal-text{font-size:1.125rem;color:var(--text-secondary);margin-bottom:2rem;line-height:1.5}.gift-reveal-button{display:inline-block;text-decoration:none;font-size:1.25rem;padding:1rem 2.5rem;animation:pulse-glow 2s ease-in-out infinite}@keyframes pulse-glow{0%,to{box-shadow:0 8px 20px var(--shadow)}50%{box-shadow:0 8px 40px var(--glow),0 0 60px var(--shadow)}}.gift-wip{display:flex;flex-direction:column;align-items:center;gap:1.25rem;margin:2.5rem 0}.gift-spinner{width:48px;height:48px;border:4px solid rgba(255,255,255,.1);border-top-color:var(--primary);border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.gift-wip-text{font-size:1rem;color:var(--text-muted)}.gift-back-link{display:inline-block;text-decoration:none;text-align:center;margin-top:.5rem}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.glow{animation:none;opacity:.2}.valentine-card{animation:none}.confetti{display:none}.cta-button:before{display:none}}:focus-visible{outline:3px solid var(--primary);outline-offset:3px}@media (prefers-contrast: high){.valentine-card{border:2px solid var(--text-primary)}.cta-button{border:2px solid currentColor}}
