*{box-sizing:border-box}html,body{max-width:100%;overflow-x:hidden}body{margin:0;background:#080808;color:#f7f4f5;font-family:Inter,Arial,sans-serif}.page{width:min(430px,100vw);max-width:100%;margin:auto;overflow:hidden;padding-bottom:38px}.hero{height:278px;padding:22px 15px 0;position:relative;overflow:hidden}.orb{position:absolute;width:230px;height:230px;border-radius:50%;right:-86px;top:-62px;overflow:hidden;background:radial-gradient(circle at 31% 24%,#ff58af 0 13%,#ff2392 52%,#de076d 100%);animation:padel-spin 5s linear infinite;will-change:transform}.orb:before,.orb:after{content:"";position:absolute;width:99px;height:220px;border:5px solid #080808;border-radius:50%}.orb:before{left:-47px;top:-21px;transform:rotate(-26deg)}.orb:after{right:-47px;top:-21px;transform:rotate(26deg)}@keyframes padel-spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.orb{animation:none}}.badge,.music{position:relative;border:1px solid #d7d1d5;border-radius:99px;background:none;color:#fff;font:600 9px 'IBM Plex Mono',monospace;letter-spacing:.08em;padding:6px 8px}.music{float:right;cursor:pointer}.eyebrow{position:relative;color:#f3a4ce;font:500 12px 'IBM Plex Mono',monospace;margin:49px 0 7px}.dots i{display:inline-block;font-style:normal;animation:dot-pulse 1.15s infinite}.dots i:nth-child(2){animation-delay:.15s}.dots i:nth-child(3){animation-delay:.3s}@keyframes dot-pulse{0%,60%,100%{opacity:.18;transform:translateY(0)}30%{opacity:1;transform:translateY(-2px)}}@media(prefers-reduced-motion:reduce){.dots i{animation:none}}h1,h2,h3,h4,p{margin-top:0}h1{position:relative;font:42px/.76 'Archivo Black',Arial Black,sans-serif;letter-spacing:-3px;margin:0}h1 span{display:block;color:#ff2392}h1 b{font-size:.61em;letter-spacing:-.7px}.progress{position:relative;border:1px solid #fff;border-radius:20px;padding:2px;height:12px;margin-top:16px}.progress i{display:block;width:98%;height:100%;background:#ff2392;border-radius:9px}.stats{font:8px 'IBM Plex Mono',monospace;color:#a29a9f;letter-spacing:.03em;margin-top:8px}.card{margin:2px 10px 29px;border:1px solid #d51675;border-radius:12px;padding:13px;background:#121212}.label{color:#a29a9f;font:600 9px 'IBM Plex Mono',monospace;letter-spacing:.13em;margin-bottom:5px}.pink{color:#ff79bb}.event h2{font-size:23px;letter-spacing:-1px;margin-bottom:14px}.event-grid{border-top:1px dashed #4c3a45;padding-top:12px;display:grid;gap:13px}.event-grid strong{font-size:14px}.event-grid p:not(.label){font-size:13px;margin:4px 0 0;color:#d2cbd0}section:not(.hero):not(.event):not(.rsvp){padding:0 15px;margin-top:30px}h3{font:31px/.9 'Archivo Black',Arial Black,sans-serif;letter-spacing:-2px;color:#efa2cd;margin-bottom:8px}.copy{font-size:14px;line-height:1.55;color:#b7afb4}.section-title{display:flex;justify-content:space-between;align-items:end}.section-title h4{font-size:17px;margin:0;letter-spacing:-.5px}.section-title span{font:10px 'IBM Plex Mono',monospace;color:#a29a9f}.grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:10px}.grid article{min-height:98px;border:1px solid #d51675;border-radius:9px;padding:10px;position:relative;background:#121212}.grid em{font:9px 'IBM Plex Mono',monospace;color:#a29a9f;font-style:normal}.grid i{position:absolute;right:10px;top:8px;color:#ff2392;font-style:normal;font-size:20px}.quest-icon{position:absolute;right:10px;top:8px;width:25px;height:25px;fill:none;stroke:#ff2392;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.grid b{display:block;font-size:14px;margin-top:33px}.grid small{display:block;color:#aaa1a7;font-size:10px;margin-top:3px}.achievements article{border-style:dashed;background:transparent}.achievements article b{margin-top:31px}.rsvp{margin:30px 9px 0;padding:17px 14px 15px;border-radius:12px;background:#ff2392;color:#080808}.rsvp .label{color:#42142d}.rsvp h3{color:#080808;margin-bottom:4px}.rsvp>p:not(.label):not(.form-message){font-size:14px;line-height:1.35}form{margin-top:13px}form label{height:44px;background:#080808;display:flex;align-items:center;border-radius:6px;margin-top:7px;color:#fff}form label span{font:600 10px 'IBM Plex Mono',monospace;padding:0 10px;color:#f5b7d7}input,select{width:100%;height:100%;border:0;outline:0;background:transparent;color:#fff;font:600 14px Inter;padding-right:10px}select{appearance:none}form button{width:100%;height:45px;border:0;border-radius:99px;background:#fff;color:#080808;font-weight:800;margin-top:10px;cursor:pointer}.interests{border:0;margin:10px 0 0;padding:0;display:flex;flex-wrap:wrap;gap:7px}.interests legend{width:100%;color:#42142d;font:700 10px 'IBM Plex Mono',monospace;margin-bottom:6px}.interests legend span{margin-right:6px}.interests legend small{font-weight:400}.interests label{width:auto;height:35px;margin:0;padding:0 10px;border-radius:99px;background:#080808;color:#fff;font-size:13px;gap:6px;cursor:pointer}.interests input{width:15px;height:15px;padding:0;accent-color:#ff2392}.trap{display:none!important}.form-message{font-size:13px;font-weight:700;margin:10px 0 0}.tips p{font-size:14px;color:#c9c1c5;line-height:1.4;margin:9px 0}.tips b{display:inline-grid;place-items:center;background:#efa2cd;color:#080808;width:19px;height:19px;border-radius:4px;font:700 9px 'IBM Plex Mono',monospace;margin-right:7px}footer{border-top:1px solid #3a3237;margin:33px 15px 0;padding-top:20px;position:relative}footer p{font:24px/1.03 'Archivo Black',Arial Black,sans-serif;letter-spacing:-1px;margin-bottom:14px}footer small{display:block;color:#aaa1a7;font-size:14px;line-height:1.45}footer strong{display:block;color:#ff79bb;margin-top:16px;font-size:14px}footer span{display:block;text-align:right;color:#6b6267;font:8px 'IBM Plex Mono',monospace;margin-top:18px}@media(min-width:600px){body{padding:30px}.page{border:1px solid #2b2529;border-radius:16px;box-shadow:0 20px 80px #000}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important;animation:none!important}}.rsvp{background:#ff2392;border:1px solid #ff79bb;box-shadow:0 12px 34px rgb(255 35 146 / .34%);color:#080808}.rsvp .label{color:#42142d}.rsvp h3{color:#080808}.rsvp>p:not(.label):not(.form-message){color:#42142d}.rsvp form>label{border:1px solid #080808;background:#080808}.rsvp form>label span{color:#ff79bb}.rsvp input,.rsvp select{color:#f7f4f5}.rsvp .interests{padding:18px;border:1px solid #080808;border-radius:9px;background:#080808;display:block}.rsvp .interests p{display:flex;align-items:center;height:auto;margin:0 0 13px;padding:0;color:#f7f4f5;font:700 14px Inter,sans-serif;border:0}.rsvp .interests p span{display:inline-block;width:40px;color:#ff79bb;font:600 10px 'IBM Plex Mono',monospace}.rsvp .interests p b{font:inherit}.rsvp .interests label{display:inline-flex;width:auto;height:35px;margin:0 5px 0 0;padding:0 10px;border:1px solid #3e2935;border-radius:99px;background:#121212}.rsvp .interests label:has(input:checked){border-color:#ff79bb;background:#301025}.rsvp form button{border:1px solid #fff;background:#fff;color:#080808;border-radius:9px}.rsvp-form{display:grid;gap:9px}.rsvp-form .rsvp-row{display:grid;grid-template-columns:38px 1fr;align-items:center;min-height:59px;margin:0;padding:0 14px;border:1px solid #080808;border-radius:9px;background:#080808}.rsvp-form .step{color:#ff79bb;font:600 10px 'IBM Plex Mono',monospace}.rsvp-form .field{display:grid;gap:1px}.rsvp-form .field small,.rsvp-interests legend small{color:#b888a3;font:600 8px 'IBM Plex Mono',monospace;letter-spacing:.08em}.rsvp-form .field input,.rsvp-form .field select{height:22px;padding:0;color:#fff;font:700 14px Inter;background:none}.rsvp-form .field select{cursor:pointer;padding-right:25px;appearance:none;background:linear-gradient(45deg,transparent 50%,#ff79bb 50%) calc(100% - 7px) 8px/6px 6px no-repeat,linear-gradient(135deg,#ff79bb 50%,transparent 50%) calc(100% - 1px) 8px/6px 6px no-repeat}.rsvp-form .field select:invalid{color:#9a7b8b}.rsvp-form .field select option{color:#fff;background:#121212}.interest-picker{position:relative}.interest-picker details{min-width:0}.interest-picker summary{display:flex;align-items:center;justify-content:space-between;min-height:57px;cursor:pointer;list-style:none}.interest-picker summary::-webkit-details-marker{display:none}.interest-picker summary .field{min-width:0}.interest-picker summary b{overflow:hidden;color:#fff;font:700 14px Inter;white-space:nowrap;text-overflow:ellipsis}.interest-picker summary i{color:#ff79bb;font-size:19px;font-style:normal;transition:transform .2s}.interest-picker details[open] summary i{transform:rotate(180deg)}.interest-picker details[open]{width:100%}.interest-picker details[open] .interest-menu{position:absolute;z-index:2;top:calc(100% - 4px);left:-14px;right:-14px;display:grid;gap:3px;padding:7px;border:1px solid #ff79bb;border-radius:9px;background:#121212;box-shadow:0 10px 25px #000}.interest-menu{display:none}.interest-menu label{height:37px;margin:0;padding:0 10px;border-radius:6px;background:#080808;color:#fff;font-size:13px;cursor:pointer}.interest-menu input{width:15px;height:15px;margin:0 7px 0 0;accent-color:#ff2392}.interest-menu label:has(input:checked){color:#ff79bb}.rsvp-form button{height:50px;margin-top:3px;border:1px solid #fff;border-radius:9px;background:#fff;color:#080808;font:800 13px Inter}.rsvp-form button b{margin-left:8px;color:#ff2392;font-size:18px}.rsvp-form .trap{display:none!important}.rsvp .interests{display:none}.envelope-screen{position:fixed;inset:0;z-index:5;display:grid;place-items:center;background:#080808;padding:24px;transition:opacity .65s ease,visibility .65s}.envelope{width:min(340px,90vw);height:230px;position:relative;background:#ff2392;border-radius:10px;box-shadow:0 20px 65px #000}.envelope:before,.envelope:after{content:"";position:absolute;inset:0;border-radius:10px;pointer-events:none}.envelope:before{clip-path:polygon(0 0,50% 52%,100% 0,100% 100%,0 100%);background:linear-gradient(135deg,#f21482,#ff79bb)}.envelope:after{clip-path:polygon(0 100%,50% 52%,100% 100%);background:#df126f}.letter{position:absolute;z-index:1;left:27px;right:27px;top:22px;height:160px;background:#f7f4f5;color:#080808;padding:17px;font-family:'IBM Plex Mono',monospace;display:flex;flex-direction:column;justify-content:space-between;text-align:center;transition:transform .7s cubic-bezier(.3,.9,.3,1)}.letter span,.letter small{font-size:9px;letter-spacing:.13em}.letter strong{font:29px/.87 'Archivo Black',Arial Black,sans-serif;letter-spacing:-2px;color:#ff2392}.envelope button{position:absolute;z-index:3;left:50%;bottom:21px;transform:translateX(-50%);border:1px solid #080808;border-radius:99px;background:#f7f4f5;color:#080808;font:700 11px 'IBM Plex Mono',monospace;padding:10px 25px;cursor:pointer}.opened .letter{transform:translateY(-260px) rotate(-4deg)}.opened .envelope{animation:pop .7s both}.envelope-screen.done{opacity:0;visibility:hidden}.page{display:none}.page.visible{display:block;animation:reveal .6s ease both}@keyframes pop{50%{transform:scale(1.04)}100%{transform:scale(.9);opacity:0}}@keyframes reveal{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:none}}h1{font-size:46px}.tips .label{font-size:10px}footer p{font-size:26px}footer small{font-size:15px}footer strong{font-size:15px}footer span{font-size:9px}.envelope{background:#f51b86;box-shadow:0 26px 76px rgb(255 35 146 / .23%)}.envelope:before{background:linear-gradient(135deg,#ef167d,#ff65ae)}.envelope:after{background:#d90c69}.letter{top:18px;height:151px;background:#fff9fa;padding:18px 17px 20px}.letter strong{color:#e81778}.letter span,.letter small{letter-spacing:.12em}.envelope button{bottom:12px;padding:10px 30px;background:#fff9fa;border-color:#24101b;box-shadow:0 6px 16px rgb(36 16 27 / .16%);font-weight:700}.envelope-screen:not(.opened) .envelope:hover .letter,.envelope-screen:not(.opened) .envelope:focus-within .letter{transform:translateY(-8px)}.envelope-screen:not(.opened) .envelope:hover button,.envelope-screen:not(.opened) .envelope:focus-within button{transform:translateX(-50%) translateY(-2px)}@media(prefers-reduced-motion:no-preference){.envelope button{animation:open-breathe 2.4s ease-in-out infinite}@keyframes open-breathe{50%{box-shadow:0 8px 23px rgb(36 16 27 / .28%);transform:translateX(-50%) scale(1.03)}}}}.memories{margin-top:28px}.play-reel{display:block;width:100%;margin-top:8px;padding:10px;background:#1a1a1a;border:1px solid #333;color:#ff2392;border-radius:10px;font:700 12px 'IBM Plex Mono',monospace;cursor:pointer;text-align:center}.play-reel:hover{background:#222;border-color:#ff2392}.guestbook{margin-top:32px}.chat-window{background:#111;border:1px solid #2a2a2a;border-radius:16px;overflow:hidden;margin-top:14px;box-shadow:0 8px 30px rgba(0,0,0,0.5)}.chat-titlebar{background:#181818;padding:10px 14px;display:flex;align-items:center;border-bottom:1px solid #222}.chat-dots{display:flex;gap:6px;margin-right:12px}.chat-dots i{width:9px;height:9px;border-radius:50%;display:inline-block;background:#333}.chat-dots i:nth-child(1){background:#ff5f56}.chat-dots i:nth-child(2){background:#ffbd2e}.chat-dots i:nth-child(3){background:#27c93f}.chat-title{font:500 11px 'IBM Plex Mono',monospace;color:#888}.chat-body{padding:14px;display:flex;flex-direction:column;gap:10px;max-height:260px;overflow-y:auto}#chat-messages{display:flex;flex-direction:column;gap:8px;width:100%}.chat-bubble{max-width:80%;padding:10px 14px;border-radius:14px;font-size:13px;line-height:1.4;width:fit-content}.chat-bubble.system{align-self:flex-start;background:#1c1c1c;color:#bbb;border:1px solid #282828}.chat-bubble.user{align-self:flex-end;background:#ff2392;color:#fff;border-bottom-right-radius:4px;margin-left:auto}.chat-bubble.other{align-self:flex-start;background:#1c1c1c;color:#fff;border-bottom-left-radius:4px;border:1px solid #2e2e2e}.chat-msg-text{word-break:break-word}.chat-meta{display:flex;align-items:center;justify-content:flex-end;gap:6px;margin-top:4px}.chat-time{font:400 9px 'IBM Plex Mono',monospace;color:rgba(255,255,255,.55)}.chat-bubble.other .chat-time{color:#777}.chat-del-btn{background:none;border:none;color:rgba(255,255,255,.45);font-size:13px;line-height:1;cursor:pointer;padding:0;width:14px;height:14px;display:grid;place-items:center;border-radius:50%;transition:color .15s,background .15s}.chat-del-btn:hover{color:#fff;background:rgba(255,255,255,.15)}.chat-input-row{padding:10px 12px;display:block;background:#141414;border-top:1px solid #222}.chat-input-wrap{display:flex;align-items:center;background:#0a0a0a;border:1px dashed #333;border-radius:10px;padding:3px 5px 3px 12px}.chat-input-wrap:focus-within{border-color:#ff2392;border-style:solid}.chat-text{flex:1;background:transparent;border:none;color:#fff;font-size:13px;outline:none;height:36px;padding:0}.chat-input-row .chat-send{margin:0;width:32px;height:32px;background:linear-gradient(135deg,#ff2392,#d90c69);border:1px solid #ff79bb;color:#fff;border-radius:50%;font-weight:700;cursor:pointer;display:grid;place-items:center;font-size:14px;box-shadow:0 0 10px rgba(255,35,146,0.35);transition:transform .15s,box-shadow .15s}.chat-send:hover{transform:scale(1.06);box-shadow:0 0 14px rgba(255,35,146,0.6)}.chat-send:active{transform:scale(0.95)}.chat-chips{padding:10px 12px;display:flex;flex-wrap:wrap;gap:6px;background:#141414;border-top:1px solid #1c1c1c}.chip{background:#1f1f1f;border:1px solid #2c2c2c;color:#bbb;padding:6px 10px;border-radius:99px;font:11px 'IBM Plex Mono',monospace;cursor:pointer}.chip:hover{color:#fff;border-color:#ff2392}
.kanda-visual{display:flex;align-items:center;gap:8px;margin-top:10px;}
.kanda-visual .event-img{width:64px;height:64px;object-fit:cover;border-radius:8px;border:1px solid rgba(255,255,255,0.2);}
.kanda-visual .event-icon{width:32px;height:32px;object-fit:contain;}

.kanda-banner{display:flex;flex-direction:column;align-items:center;margin-top:14px;overflow:hidden;border-radius:12px;border:1px solid rgba(255,255,255,0.1);background:rgba(255,255,255,0.05);}
.kanda-banner .kanda-img{width:100%;aspect-ratio:1/1;object-fit:cover;object-position:center 35%;display:block;}
.kanda-banner .kanda-caption{display:flex;align-items:center;justify-content:center;padding:6px 0;}
.kanda-banner .kanda-icon{width:100px;height:auto;object-fit:contain;display:block;}
