:root{--porcelain: #F6F4EF;--glaze: #FFFFFF;--tile: #FBFAF6;--line: #C9D2E6;--line-soft: #E3E8F2;--ink: #14254F;--muted: #5A6890;--blue: #1E3F8F;--blue-dark: #122A63;--seal: #B2343A;--green: #2F7A55;--display: "Prata", Georgia, serif;--body: "Golos Text", system-ui, sans-serif;--gutter: clamp(20px, 5vw, 64px)}*{box-sizing:border-box}html,body{margin:0}body{background:var(--porcelain);color:var(--ink);font-family:var(--body);font-size:16px;line-height:1.55;-webkit-font-smoothing:antialiased}a{color:var(--blue)}a:hover{color:var(--blue-dark)}h1,h2,h3{font-family:var(--display);font-weight:400;margin:0;text-wrap:balance}p{margin:0}button{font:inherit}:focus-visible{outline:2px solid var(--blue);outline-offset:2px}img{max-width:100%}.wrap{max-width:1240px;margin:0 auto;padding-inline:var(--gutter)}.btn{height:52px;padding:0 28px;border:0;border-radius:3px;background:var(--blue);color:#fff;font-weight:600;font-size:16px;display:inline-flex;align-items:center;justify-content:center;gap:10px;cursor:pointer;text-decoration:none}.btn:hover{background:var(--blue-dark);color:#fff}.btn:disabled{opacity:.5;cursor:default}.btn.ghost{background:var(--glaze);color:var(--blue);border:1px solid var(--line)}.btn.ghost:hover{background:var(--tile)}.btn.small{height:40px;padding:0 16px;font-size:14px}.eyebrow{font-size:12px;letter-spacing:.28em;text-transform:uppercase;color:var(--muted)}.muted{color:var(--muted)}.panel{background:var(--glaze);border:1px solid var(--line);border-radius:3px}.field{display:flex;flex-direction:column;gap:6px;font-size:14px;color:var(--muted)}.field input,.field textarea,.field select{font:inherit;color:var(--ink);background:var(--glaze);border:1px solid var(--line);border-radius:3px;padding:10px 12px}.field input,.field select{height:52px}.field textarea{min-height:96px;resize:vertical}.error{color:var(--seal)}.nav{background:var(--glaze);border-bottom:1px solid var(--line)}.nav .wrap{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px 24px;padding-block:16px}.nav .brand{font-family:var(--display);font-size:20px;color:var(--blue);text-decoration:none}.nav .links{display:flex;flex-wrap:wrap;gap:6px 22px;align-items:center;font-size:15px}.nav .links a{text-decoration:none}.nav .links a.active{color:var(--ink);font-weight:600;text-decoration:underline;text-underline-offset:6px}.nav .links .logout{display:inline-flex;align-items:center;gap:8px;margin-left:10px;height:40px;padding:0 14px;border:1px solid var(--line);border-radius:3px;background:var(--tile);color:var(--seal);font-size:14px;font-weight:500;cursor:pointer}.nav .links .logout:hover{background:#f6e1e2;border-color:var(--seal)}.page{padding-block:48px 80px;display:flex;flex-direction:column;gap:32px}.page-title{font-size:clamp(32px,3.6vw,48px);line-height:1.1}.entry{min-height:100vh;position:relative;overflow:hidden;background:#e3e8f1;display:flex;align-items:center;justify-content:center}.tiles{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));grid-auto-rows:120px;gap:2px;opacity:.55}.tiles div{background:var(--tile);display:flex;align-items:center;justify-content:center;animation:flip 14s ease-in-out infinite}@keyframes flip{0%,80%,to{transform:rotateY(0)}88%{transform:rotateY(90deg)}94%{transform:rotateY(0)}}.envelope{position:relative;width:calc(100% - 40px);max-width:820px;margin:64px 20px;padding:10px;border-radius:3px;box-shadow:0 40px 80px #14254f40;background:repeating-linear-gradient(135deg,#1e3f8f 0,#1e3f8f 14px,#fff 14px,#fff 24px,#b2343a 24px,#b2343a 38px,#fff 38px,#fff 48px);animation:arrive 1.4s cubic-bezier(.2,.8,.2,1) both}@keyframes arrive{0%{opacity:0;transform:translateY(40px) rotate(-3deg)}to{opacity:1;transform:translateY(0) rotate(-1deg)}}.envelope-face{background:#fbf8f1;min-height:420px;padding:clamp(24px,4vw,44px);display:flex;flex-direction:column;justify-content:space-between;gap:40px}.envelope-top{display:flex;justify-content:space-between;align-items:flex-start;gap:24px}.par-avion{font-family:var(--display);font-size:15px;letter-spacing:.2em;text-transform:uppercase;color:var(--blue)}.stamp-area{position:relative}.postmark{position:absolute;right:70px;top:18px;width:96px;height:96px;border:2px solid var(--blue);border-radius:50%;display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--blue);font-size:10px;letter-spacing:.14em;text-transform:uppercase;transform:rotate(-14deg);animation:stampin .5s ease-out 1.5s both}@keyframes stampin{0%{opacity:0;transform:rotate(-14deg) scale(1.4)}to{opacity:.85;transform:rotate(-14deg) scale(1)}}.stamp{width:92px;height:112px;padding:6px;background:#fff;outline:2px dashed var(--line);outline-offset:-1px;box-shadow:0 2px 6px #14254f1f}.stamp>div{width:100%;height:100%;border:1px solid var(--blue);background:var(--porcelain);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;font-size:9px;letter-spacing:.16em;color:var(--blue)}.address{font-style:normal;align-self:flex-end;width:min(100%,400px);font-family:var(--display);font-size:clamp(18px,1.8vw,22px);line-height:1.75}.address span{display:block;border-bottom:1px solid #DCD6C8}.open-row{display:flex;flex-wrap:wrap;align-items:center;gap:16px}@media(max-width:560px){.postmark{right:40px}.envelope-face{min-height:0}}.welcome{min-height:100vh;background:#e6eaf2;display:flex;align-items:center;justify-content:center;padding:48px 20px}.letter{width:100%;max-width:960px;min-height:min(620px,calc(100vh - 96px));justify-content:space-between;background:var(--glaze);border:1px solid var(--line);border-top:6px solid var(--blue);padding:clamp(28px,5vw,64px);display:flex;flex-direction:column;gap:40px;box-shadow:0 24px 48px #14254f1f;animation:unfold .8s ease-out both}@keyframes unfold{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:none}}.steps{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:2px;background:var(--line);border:2px solid var(--line)}.steps li{flex:1 1 220px;background:var(--tile);padding:24px;display:flex;flex-direction:column;gap:8px}.rail{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;scroll-padding-inline:var(--gutter);padding-bottom:12px;margin-inline:calc(-1 * var(--gutter));padding-inline:var(--gutter);scrollbar-width:thin}.rail-item{flex:none;width:152px;display:flex;flex-direction:column;gap:10px;scroll-snap-align:start}.rail-year{height:18px;font-size:13px;font-weight:600;color:var(--blue);padding-left:4px}.rail-tile{margin-right:8px;height:132px;border:1px solid var(--line);border-radius:3px;background:var(--glaze);color:var(--ink);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;cursor:pointer}.rail-tile .name{font-family:var(--display);font-size:20px}.rail-tile small{font-size:14px;opacity:.8}.rail-tile[aria-selected=true]{background:var(--blue);border-color:var(--blue);color:#fff}.rail-line{position:relative;height:14px}.rail-line:before{content:"";position:absolute;left:0;right:0;top:6px;height:2px;background:var(--line)}.rail-line span{position:absolute;left:68px;top:3px;width:8px;height:8px;border-radius:50%;background:var(--line)}.rail-line span.on{top:0;width:14px;height:14px;background:var(--blue)}.month{display:flex;flex-wrap:wrap;gap:40px;align-items:flex-start}.month-head{flex:1 1 260px;display:flex;flex-direction:column;gap:14px}.month-head h2{font-size:clamp(40px,4vw,56px);line-height:1}.ideas{flex:999 1 560px;min-width:0;display:flex;flex-direction:column;gap:2px;background:#dce2ee;border:1px solid #DCE2EE}.idea{background:var(--glaze);display:flex;flex-wrap:wrap;gap:20px;padding:20px}.idea img,.idea .ph{flex:none;width:168px;height:112px;object-fit:cover;border-radius:2px;background:#e6eaf2}.idea .body{flex:1 1 260px;min-width:0;display:flex;flex-direction:column;gap:6px}.idea h3{font-size:21px;line-height:1.25}.idea .links{display:flex;flex-wrap:wrap;gap:4px 16px;font-size:14px}.search{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:16px;align-items:end;padding:24px}.offers{display:flex;flex-direction:column;gap:2px;background:var(--line-soft);border:1px solid var(--line-soft)}.offer{background:var(--glaze);padding:18px 20px;display:flex;flex-wrap:wrap;gap:12px 24px;align-items:center;justify-content:space-between}.offer.chosen{outline:2px solid var(--blue);outline-offset:-2px}.offer .legs{display:flex;flex-direction:column;gap:4px;min-width:0}.offer .time{font-size:20px;font-weight:600;font-variant-numeric:tabular-nums}.offer .price{font-family:var(--display);font-size:26px;white-space:nowrap}.req{padding:24px;display:flex;flex-direction:column;gap:14px}.status{display:inline-block;font-size:13px;padding:3px 10px;border-radius:12px;background:var(--line-soft);color:var(--ink)}.status.booked{background:#ddefe5;color:var(--green)}.status.cancelled{background:#f6e1e2;color:var(--seal)}.kv{display:grid;grid-template-columns:max-content 1fr;gap:4px 16px;font-size:15px}.kv dt{color:var(--muted)}.kv dd{margin:0;min-width:0;overflow-wrap:anywhere}.req-body{display:flex;flex-direction:column;gap:14px}.req-head{display:flex;flex-wrap:wrap;justify-content:space-between;gap:12px;align-items:baseline}.dimmed{opacity:.45;filter:grayscale(1)}.is-cancelled{background:#f1f0ee}.file-row{display:flex;flex-wrap:wrap;gap:8px 16px;align-items:center}.link-danger{background:none;border:0;padding:0;color:var(--seal);cursor:pointer;font-size:14px;text-decoration:underline}.leg,.files{display:flex;flex-direction:column;gap:8px}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important}}.gift{min-height:100vh;background:var(--blue);position:relative;overflow:hidden;display:flex;align-items:center;justify-content:center;padding:40px 20px}.gift:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background-image:radial-gradient(rgba(255,255,255,.12) 1.5px,transparent 1.5px);background-size:28px 28px}.gift-inner{position:relative;width:100%;max-width:1180px;display:flex;flex-direction:column;gap:20px}.gift-top{display:flex;justify-content:space-between;font-size:14px;color:#c9d7f5}.gift-top button{background:none;border:0;color:#c9d7f5;cursor:pointer;padding:0}.gift-nav{display:flex;justify-content:space-between;gap:16px}.btn.light{background:#fbf8f1;color:var(--blue)}.btn.light:hover{background:#fff;color:var(--blue-dark)}.btn.outline{background:transparent;color:#fff;border:1px solid #C9D7F5;font-weight:500}.btn.outline:hover{background:#ffffff1a;color:#fff}.ticket{position:relative;display:flex;flex-wrap:wrap;background:#fbf8f1;border-radius:12px;overflow:hidden;box-shadow:0 40px 80px #00000059;color:var(--ink);animation:drop 1s cubic-bezier(.2,.8,.2,1) both,float 7s ease-in-out 1s infinite}@keyframes drop{0%{opacity:0;transform:translateY(-40px) rotate(-4deg)}to{opacity:1;transform:translateY(0) rotate(-1deg)}}@keyframes float{0%,to{transform:translateY(0) rotate(-1deg)}50%{transform:translateY(-8px) rotate(-.4deg)}}.shine{position:absolute;top:0;bottom:0;left:0;width:30%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.55),transparent);animation:shine 6s ease-in-out 1.5s infinite;pointer-events:none;z-index:2}@keyframes shine{0%,55%{transform:translate(-120%) skew(-20deg)}to{transform:translate(320%) skew(-20deg)}}.ticket-main{flex:999 1 640px;min-width:0;padding:clamp(24px,4vw,48px);display:flex;flex-direction:column;gap:28px;position:relative}.ticket-row{display:flex;justify-content:space-between;align-items:center;gap:16px}.small-caps{font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--muted)}.ticket-main>.ticket-row.small-caps{font-size:12px;letter-spacing:.28em}.route{display:flex;align-items:center;gap:20px;flex-wrap:wrap}.iata{font-family:var(--display);font-size:clamp(48px,6vw,84px);line-height:1;color:var(--blue)}.city{font-size:14px;color:var(--muted)}.route-line{flex:1 1 200px;min-width:160px;height:90px;overflow:visible}.route-path{stroke-dasharray:10 10;animation:dash 1.6s linear infinite}@keyframes dash{to{stroke-dashoffset:-60}}.plane-static{display:none}.ticket-title{font-size:clamp(40px,5vw,76px);line-height:1.05}.fields{display:flex;flex-wrap:wrap;gap:28px 48px}.field-value{font-size:18px;color:var(--ink);font-weight:500;height:34px;line-height:34px}.reel-window{overflow:hidden}.reel{animation:months 15s cubic-bezier(.6,0,.2,1) infinite}.reel div{height:34px;line-height:34px}@keyframes months{0%,12.5%{transform:translateY(0)}16.667%,29.167%{transform:translateY(-34px)}33.333%,45.833%{transform:translateY(-68px)}50%,62.5%{transform:translateY(-102px)}66.667%,79.167%{transform:translateY(-136px)}83.333%,95.833%{transform:translateY(-170px)}to{transform:translateY(-204px)}}.stamp-wrap{position:absolute;right:36px;bottom:32px;width:120px;height:120px}.gift-stamp{position:absolute;top:0;right:0;bottom:0;left:0;border:3px solid var(--seal);border-radius:50%;color:var(--seal);display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:11px;letter-spacing:.18em;text-transform:uppercase;transform:rotate(-14deg);opacity:.95}.stamp-big{font-family:var(--display);font-size:20px;letter-spacing:.04em}.ticket-stub{flex:1 1 220px;border-left:3px dashed var(--line);padding:clamp(24px,3vw,40px);display:flex;flex-direction:column;justify-content:space-between;gap:24px;background:#f4efe3}.qr{position:relative;align-self:flex-start;width:min(100%,168px);aspect-ratio:1;background:#fff;padding:8px;border-radius:4px;overflow:hidden;box-shadow:0 0 0 1px var(--line)}.gate{font-family:var(--display);font-size:22px;color:var(--blue)}@media(prefers-reduced-motion:reduce){.plane-moving{display:none}.plane-static{display:block}.flyers,.shine{display:none}.ticket{transform:rotate(-1deg)}}.bday{position:relative;display:flex;flex-wrap:wrap;background:#fbf8f1;border-radius:12px;box-shadow:0 40px 80px #00000059;color:var(--ink);animation:drop 1s cubic-bezier(.2,.8,.2,1) both,float 7s ease-in-out 1s infinite}.bunting{position:absolute;left:0;top:0;width:100%;height:84px;transform-origin:50% 0;animation:sway 6s ease-in-out infinite;pointer-events:none;z-index:1}@keyframes sway{0%,to{transform:rotate(-.35deg)}50%{transform:rotate(.35deg)}}.bday-left{flex:1 1 340px;padding:110px clamp(24px,4vw,56px) clamp(32px,4vw,56px);display:flex;align-items:center;justify-content:center}.photo-frame{position:relative;width:min(100%,380px);background:#fff;padding:14px 14px 44px;box-shadow:0 10px 28px #14254f40;transform:rotate(-2.5deg)}.photo-frame img,.photo-empty{display:block;width:100%;aspect-ratio:1;object-fit:cover;background:var(--tile)}.tape{position:absolute;left:50%;top:-16px;width:96px;height:30px;margin-left:-48px;background:#e7a33e99;transform:rotate(3deg)}.bday-right{flex:999 1 460px;min-width:0;position:relative;padding:110px clamp(24px,4vw,64px) clamp(32px,4vw,56px) clamp(24px,4vw,56px);display:flex;flex-direction:column;justify-content:center;gap:20px;box-shadow:inset 18px 0 22px -18px #14254f47;border-radius:0 12px 12px 0}.bday-title{font-size:clamp(44px,5.4vw,80px);line-height:1.04;color:var(--blue)}.bday-text{font-size:19px;line-height:1.7;color:#33446f;white-space:pre-line;max-width:520px}.bday-sign{font-family:var(--display);font-style:italic;font-size:26px;color:var(--seal)}.bouquet{position:absolute;right:clamp(20px,3vw,44px);bottom:clamp(20px,3vw,40px);width:clamp(72px,9vw,120px);height:auto}@media(max-width:900px){.bday-right{box-shadow:none;border-radius:0 0 12px 12px;padding-top:24px}.bday-left{padding-top:100px}}@media(prefers-reduced-motion:reduce){.bunting{transform:none}.bday{transform:rotate(-.5deg)}}.manual{position:relative;width:min(100%,680px);aspect-ratio:1;align-self:center;color:#111;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;filter:drop-shadow(0 34px 34px rgba(0,0,0,.36));animation:drop 1s cubic-bezier(.2,.8,.2,1) both}.manual-grid{--a: 6deg;position:absolute;top:0;right:0;bottom:0;left:0;display:grid;grid-template-columns:1fr 1fr;perspective:1600px;perspective-origin:50% 50%}.leaf{display:grid;grid-template-rows:1fr 1fr;min-width:0;min-height:0;backface-visibility:hidden;animation:unfold 1.2s cubic-bezier(.2,.8,.2,1) .15s both}.leaf-left{transform-origin:100% 50%;--ry: var(--a)}.leaf-right{transform-origin:0 50%;--ry: calc(var(--a) * -1)}@keyframes unfold{0%{transform:rotateY(0)}to{transform:rotateY(var(--ry))}}.manual-step{position:relative;min-width:0;min-height:0;padding:clamp(18px,3.4vw,34px) clamp(18px,3.4vw,34px) clamp(16px,3vw,28px);display:flex;flex-direction:column;gap:6px}.leaf-left .manual-step:nth-child(1){background:#f4f2ed;box-shadow:inset 0 -1px #0000001a}.leaf-left .manual-step:nth-child(2){background:#eae7e0;box-shadow:inset 0 1px #ffffffe6}.leaf-right .manual-step:nth-child(1){background:#fdfcfa;box-shadow:inset 0 -1px #0000001a}.leaf-right .manual-step:nth-child(2){background:#f3f1ec;box-shadow:inset 0 1px #ffffffe6}.step-n{font-size:clamp(26px,4.2vw,40px);font-weight:700;line-height:1;letter-spacing:-.02em}.manual-step svg{flex:1;min-height:0;width:100%}.step-title{margin:0;font-family:inherit;font-size:clamp(12px,1.7vw,15px);font-weight:500;letter-spacing:.01em;line-height:1.2}.manual-arrow{position:absolute;left:50%;transform:translate(-50%,-50%);width:clamp(30px,5vw,46px);height:auto;z-index:2}.arrow-top{top:25%}.arrow-bottom{top:75%}@media(max-width:520px){.manual{aspect-ratio:auto}.manual-grid{position:static;grid-template-columns:1fr;perspective:none}.leaf{grid-template-rows:none;transform:none!important;animation:none}.manual-step{aspect-ratio:4 / 3;background:#fbfaf7!important;box-shadow:none!important}.manual-arrow{display:none}}@media(prefers-reduced-motion:reduce){.leaf{animation:none;transform:rotateY(var(--ry))}}.flyers{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden;pointer-events:none}.flyer{position:absolute;top:0;color:#d6e2fa8c;animation:fall 22s linear infinite;will-change:transform}@keyframes fall{0%{transform:translate3d(0,-12vh,0) rotate(var(--r0))}50%{transform:translate3d(var(--sway),50vh,0) rotate(calc(var(--r0) + 40deg))}to{transform:translate3d(0,108vh,0) rotate(calc(var(--r0) + 80deg))}}.blades-spin{transform-box:view-box;transform-origin:24px 18px;animation:bspin 7s linear infinite}@keyframes bspin{to{transform:rotate(360deg)}}.editor{display:flex;flex-direction:column;gap:22px;padding:18px;background:var(--tile);border:1px solid var(--line);border-radius:3px}.editor-actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
