:root{color:#24313a;background:#f8fcff;font-family:Pretendard,Apple SD Gothic Neo,Noto Sans KR,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-synthesis:none;line-height:1.5;text-rendering:optimizeLegibility;--blue: #aee2ff;--blue-strong: #73c9f5;--blue-soft: #eaf8ff;--ink: #24313a;--muted: #788994;--line: #ddebf2;--paper: #ffffff;--shadow: 0 22px 70px rgba(82, 150, 186, .2)}*{box-sizing:border-box}html{min-height:100%;background:#f8fcff}body{min-width:320px;min-height:100vh;margin:0;overflow-x:hidden}button,input{font:inherit}button{border:0;cursor:pointer}button:disabled{cursor:not-allowed;opacity:.42}#root{min-height:100vh}.app,.gate-shell{min-height:100vh;background:radial-gradient(circle at 16% 10%,rgba(174,226,255,.48),transparent 28%),radial-gradient(circle at 82% 22%,rgba(221,235,242,.56),transparent 24%),linear-gradient(180deg,#fff,#f8fcff 46%,#edf8ff)}.screen,.gate-shell{display:flex;width:100%;min-height:100vh;align-items:center;justify-content:center;padding:28px 18px}.soft-label{margin:0 0 8px;color:var(--blue-strong);font-size:.72rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase}.gate-card{position:relative;width:min(100%,360px);padding:34px 24px 26px;overflow:hidden;border:1px solid rgba(174,226,255,.9);border-radius:28px;background:#ffffffe6;box-shadow:var(--shadow);text-align:center}.gate-card.is-shaking{animation:shake .42s ease both}.tiny-doodles{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.tiny-doodles span,.intro-orbit span{position:absolute;display:block;border:2px solid rgba(115,201,245,.38);transform:rotate(45deg)}.tiny-doodles span:nth-child(1){top:22px;right:28px;width:13px;height:13px;border-radius:4px}.tiny-doodles span:nth-child(2){bottom:32px;left:24px;width:9px;height:9px;border-radius:50%}.tiny-doodles span:nth-child(3){right:42px;bottom:74px;width:16px;height:16px;border-radius:6px}.gate-note{margin:0 0 9px;color:var(--muted);font-size:.86rem;font-weight:700}.gate-card h1,.intro-screen h1,.album-header h1,.letter-paper h1{margin:0;color:var(--ink);letter-spacing:0}.gate-card h1{font-size:clamp(2.15rem,12vw,3.25rem);line-height:1.05}.password-form{display:grid;gap:12px;margin-top:28px}.password-form label{color:var(--muted);font-size:.78rem;font-weight:800}.password-form input{width:100%;height:56px;border:1px solid var(--line);border-radius:18px;outline:0;background:#f9fdff;color:var(--ink);font-size:1.55rem;font-weight:800;letter-spacing:.32em;text-align:center;transition:border-color .18s ease,box-shadow .18s ease}.password-form input:focus{border-color:var(--blue-strong);box-shadow:0 0 0 5px #aee2ff5c}.password-form button,.primary-button,.final-page-content button{min-height:52px;border-radius:999px;background:linear-gradient(135deg,#94d8ff,#c8edff);color:#18313f;font-size:1rem;font-weight:900;box-shadow:0 14px 26px #73c9f547;transition:transform .18s ease,box-shadow .18s ease}.password-form button:active,.primary-button:active,.final-page-content button:active,.book-controls button:active,.ghost-button:active{transform:translateY(1px) scale(.99)}.form-error{min-height:20px;margin:-2px 0 0;color:#e46f7a;font-size:.82rem;font-weight:800}.intro-screen{position:relative;flex-direction:column;text-align:center}.intro-orbit{position:absolute;width:min(78vw,300px);height:min(78vw,300px);border:1px solid rgba(174,226,255,.6);border-radius:50%;opacity:.8}.intro-orbit span:nth-child(1){top:16%;left:12%;width:15px;height:15px;border-radius:5px}.intro-orbit span:nth-child(2){right:6%;bottom:24%;width:11px;height:11px;border-radius:50%}.intro-orbit span:nth-child(3){left:20%;bottom:5%;width:18px;height:18px;border-radius:7px}.intro-screen>*:not(.intro-orbit){position:relative;z-index:1}.intro-screen h1{max-width:min(92vw,560px);font-size:clamp(2.15rem,10vw,4.15rem);line-height:1.08}.intro-copy{margin:18px 0 26px;color:var(--muted);font-size:1.1rem;font-weight:800}.album-cover-preview{position:relative;width:min(70vw,250px);height:min(82vw,300px);margin:0 auto 24px;border:1px solid rgba(115,201,245,.34);border-radius:8px;background:linear-gradient(135deg,rgba(255,255,255,.72),transparent 42%),linear-gradient(180deg,#fbfeff,#e3f5ff);box-shadow:0 20px 34px #5296ba29,inset 10px 0 #62b0d929;overflow:hidden;transform:rotate(-2deg)}.album-cover-preview:before{position:absolute;inset:14px 14px auto 26px;height:1px;background:#769db138;box-shadow:0 36px #769db129,0 72px #769db124;content:""}.album-cover-spine{position:absolute;inset:0 auto 0 0;width:22px;background:linear-gradient(180deg,#b7e3f7,#f7d5df)}.album-cover-photo{position:absolute;display:block;border:6px solid rgba(255,255,255,.96);border-radius:4px;background:linear-gradient(135deg,rgba(255,255,255,.18),transparent 48%),linear-gradient(160deg,#f7d5df,#d3f0fd 52%,#fff5ca);box-shadow:0 10px 18px #5296ba1f}.album-cover-photo--one{top:54px;left:46px;width:92px;height:72px;transform:rotate(-4deg)}.album-cover-photo--two{right:30px;bottom:72px;width:96px;height:88px;transform:rotate(5deg)}.album-cover-title{position:absolute;left:40px;right:26px;bottom:28px;color:#45606e;font-family:Playfair Display,Georgia,serif;font-size:1.55rem;font-weight:700;line-height:1}.primary-button{width:min(100%,220px)}.envelope-letter{position:relative;z-index:1;width:min(100%,390px);margin:0 auto 24px}.envelope-letter.is-open{z-index:20}.envelope-letter.is-open:before{position:fixed;top:0;right:0;bottom:0;left:0;z-index:10;background:#f8fcffd1;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);content:""}.envelope-button{position:relative;z-index:11;display:grid;width:100%;justify-items:center;gap:12px;padding:0;border:0;background:transparent;color:var(--ink)}.envelope-visual{position:relative;display:block;width:min(68vw,252px);height:168px;transform-style:preserve-3d}.envelope-back,.envelope-front,.envelope-flap,.envelope-paper-preview,.envelope-side-folds{position:absolute;display:block;left:50%;transform:translate(-50%)}.envelope-back{bottom:4px;width:230px;height:132px;border:1px solid rgba(115,201,245,.38);border-radius:10px;background:linear-gradient(135deg,rgba(255,255,255,.82),transparent 44%),linear-gradient(180deg,#fbfeff,#e3f5ff);box-shadow:0 20px 34px #5296ba29}.envelope-paper-preview{bottom:44px;width:166px;height:96px;padding:25px 20px 18px;border:1px solid rgba(224,235,241,.92);border-radius:5px;background:linear-gradient(90deg,rgba(255,232,224,.42) 0 1px,transparent 1px 100%),linear-gradient(#fffefb 23px,#ddebf25c 24px),#fffefb;background-position:22px 0,0 0,0 0;background-size:100% 24px;box-shadow:0 12px 22px #5296ba1a;transition:transform .52s cubic-bezier(.2,.78,.23,1),opacity .26s ease}.envelope-paper-preview span{display:block;height:5px;margin-bottom:9px;border-radius:999px;background:#d9edf7}.envelope-paper-preview span:nth-child(2){width:72%}.envelope-paper-preview span:nth-child(3){width:54%}.envelope-side-folds{bottom:4px;z-index:2;width:230px;height:132px;overflow:hidden;border-radius:10px;pointer-events:none}.envelope-side-folds:before,.envelope-side-folds:after{position:absolute;bottom:-1px;width:50%;height:104px;background:linear-gradient(180deg,#ffffff8f,#dff4ffc7);content:""}.envelope-side-folds:before{left:0;clip-path:polygon(0 0,100% 50%,0 100%)}.envelope-side-folds:after{right:0;clip-path:polygon(100% 0,0 50%,100% 100%)}.envelope-front{bottom:4px;z-index:3;width:230px;height:132px;overflow:hidden;border:1px solid rgba(115,201,245,.34);border-radius:10px;background:linear-gradient(146deg,transparent 49.5%,rgba(115,201,245,.22) 50%,transparent 50.8%),linear-gradient(214deg,transparent 49.5%,rgba(115,201,245,.2) 50%,transparent 50.8%),linear-gradient(180deg,#ffffffb3,#daf1fdeb);clip-path:polygon(0 29%,50% 70%,100% 29%,100% 100%,0 100%)}.envelope-flap{bottom:56px;z-index:4;width:230px;height:80px;clip-path:polygon(0 0,100% 0,50% 100%);border-radius:10px 10px 4px 4px;background:linear-gradient(180deg,rgba(255,255,255,.72),transparent 40%),linear-gradient(180deg,#d8f3ff,#f9fdff);filter:drop-shadow(0 3px 2px rgba(82,150,186,.08));transform-origin:50% 0;transition:transform .52s cubic-bezier(.2,.78,.23,1)}.envelope-heart{position:absolute;z-index:5;left:50%;bottom:41px;width:28px;height:28px;border:2px solid rgba(115,201,245,.5);border-radius:50%;background:radial-gradient(circle at 35% 30%,rgba(255,255,255,.98),transparent 28%),linear-gradient(180deg,#fff,#cfefff);box-shadow:0 7px 14px #5296ba24;transform:translate(-50%)}.envelope-heart:before{position:absolute;top:8px;left:8px;width:10px;height:10px;border-radius:3px 3px 2px;background:#8ed7fb;content:"";transform:rotate(45deg)}.envelope-cta{color:#48616f;font-size:.93rem;font-weight:800}.envelope-letter.is-open .envelope-flap{transform:translate(-50%) rotateX(176deg)}.envelope-letter.is-open .envelope-paper-preview{opacity:.42;transform:translate(-50%,-62px)}.intro-letter-paper{position:fixed;top:50%;right:18px;left:18px;z-index:12;width:min(calc(100vw - 36px),480px);max-height:min(690px,calc(100vh - 54px));margin:0 auto;padding:24px 22px 28px;overflow:hidden;border:1px solid rgba(217,230,236,.96);border-radius:14px;background:linear-gradient(90deg,rgba(255,230,220,.48) 0 1px,transparent 1px 100%),linear-gradient(#fffdf8 31px,#ddebf24d 32px),radial-gradient(circle at 20% 12%,rgba(255,255,255,.9),transparent 32%),#fffdf8;background-position:32px 0,0 0,0 0,0 0;background-size:100% 32px,100% 32px,100% 100%,100% 100%;box-shadow:0 24px 70px #5296ba2e;text-align:left;animation:letter-rise .52s cubic-bezier(.2,.78,.23,1) both}.intro-letter-header{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:12px}.intro-letter-header .soft-label{margin:0}.letter-close-button{min-height:34px;padding:0 13px;border:1px solid var(--line);border-radius:999px;background:#ffffffb8;color:#385464;font-size:.8rem;font-weight:800}.intro-letter-paper h2{margin:0 0 18px;color:var(--ink);font-size:clamp(1.35rem,6vw,1.8rem);line-height:1.24;word-break:keep-all}.intro-letter-body{display:grid;max-height:calc(min(690px,100vh - 54px) - 148px);gap:17px;overflow-y:auto;padding-right:8px;scrollbar-color:#bde7fb transparent}.intro-letter-body p{margin:0;color:#3e505a;font-size:.95rem;font-weight:500;line-height:1.92;word-break:keep-all}.album-screen{display:block;padding:18px 14px 22px}.album-header{display:flex;width:min(100%,430px);align-items:flex-start;justify-content:space-between;margin:0 auto 14px;gap:14px}.album-header h1{font-size:1.6rem;line-height:1.15}.album-progress{flex:0 0 auto;min-width:64px;padding:8px 10px;border:1px solid var(--line);border-radius:999px;background:#ffffffc7;color:var(--muted);font-size:.8rem;font-weight:900;text-align:center}.book-stage{display:flex;width:100%;justify-content:center;overflow:hidden}.flip-book{filter:drop-shadow(0 18px 38px rgba(51,108,138,.16))}.album-page{position:relative;display:flex;height:100%;flex-direction:column;justify-content:center;overflow:hidden;border:1px solid #e8f1f6;border-radius:18px;background:linear-gradient(90deg,rgba(221,235,242,.45),transparent 16px),#fff;color:var(--ink)}.album-page:after{position:absolute;top:18px;right:18px;width:22px;height:22px;border:2px solid rgba(174,226,255,.7);border-radius:8px;content:"";transform:rotate(16deg)}.photo-frame{display:flex;width:calc(100% - 34px);height:min(72%,386px);align-items:center;justify-content:center;margin:22px auto 16px;overflow:hidden;border:1px solid #e1edf3;border-radius:16px;background:linear-gradient(135deg,#eaf8ffd1,#fffffff2),#f9fdff}.photo-frame img{display:block;width:100%;height:100%;object-fit:contain}.photo-caption{width:calc(100% - 42px);margin:0 auto 34px;color:#51636e;font-size:clamp(.93rem,4vw,1.06rem);font-weight:800;line-height:1.55;text-align:center;word-break:keep-all}.text-page-content,.final-page-content{display:flex;min-height:100%;flex-direction:column;align-items:center;justify-content:center;padding:42px 30px;text-align:center}.text-page-content p,.final-page-content p{margin:0;color:#52666f;font-size:clamp(1rem,4.7vw,1.24rem);font-weight:800;line-height:1.7;word-break:keep-all}.final-page-content{gap:16px}.final-page-content p:first-child{color:var(--ink);font-size:clamp(1.35rem,7vw,2rem)}.final-page-content button{width:min(100%,210px);margin-top:10px}.page-number{position:absolute;right:18px;bottom:14px;color:#aab8c0;font-size:.72rem;font-weight:900}.book-controls{display:grid;width:min(100%,390px);grid-template-columns:1fr auto 1fr;align-items:center;gap:12px;margin:18px auto 0}.book-controls button,.ghost-button{min-height:46px;border:1px solid var(--line);border-radius:999px;background:#ffffffdb;color:#385464;font-size:.92rem;font-weight:900;box-shadow:0 10px 24px #5296ba1f}.book-controls span{color:var(--muted);font-size:.82rem;font-weight:900}.letter-screen{align-items:flex-start;padding-top:18px}.letter-paper{position:relative;width:min(100%,560px);min-height:calc(100vh - 36px);padding:clamp(22px,5vw,36px) clamp(22px,6vw,44px) 42px;border:1px solid rgba(217,230,236,.96);border-radius:14px;background:linear-gradient(90deg,rgba(255,230,220,.5) 0 1px,transparent 1px 100%),linear-gradient(#fffdf8 31px,#ddebf24d 32px),radial-gradient(circle at 18% 10%,rgba(255,255,255,.95),transparent 34%),#fffdf8;background-position:clamp(28px,7vw,54px) 0,0 0,0 0,0 0;background-size:100% 32px,100% 32px,100% 100%,100% 100%;box-shadow:0 24px 72px #5296ba29}.letter-paper:before{position:absolute;top:-10px;left:50%;width:94px;height:24px;border:1px solid rgba(233,218,196,.72);border-radius:4px;background:#fff6dcb8;box-shadow:0 8px 18px #80735e14;content:"";transform:translate(-50%) rotate(-2deg)}.ghost-button{min-height:40px;padding:0 18px;margin-bottom:30px;background:#ffffffb8}.letter-paper h1{margin-bottom:28px;font-size:clamp(1.7rem,6vw,2.2rem);line-height:1.25;word-break:keep-all}.letter-body{display:grid;gap:20px}.letter-body p{margin:0;color:#3e505a;font-size:clamp(.98rem,2.7vw,1.05rem);font-weight:500;line-height:1.96;word-break:keep-all}@keyframes shake{0%,to{transform:translate(0)}25%{transform:translate(-6px)}50%{transform:translate(5px)}75%{transform:translate(-3px)}}@keyframes letter-rise{0%{opacity:0;transform:translateY(calc(-50% + 18px)) scale(.98)}to{opacity:1;transform:translateY(-50%) scale(1)}}@media (min-width: 720px){.screen,.gate-shell{padding:34px}.album-screen{padding-top:26px}.letter-screen{padding-top:34px}.letter-paper{min-height:calc(100vh - 68px)}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}.envelope-letter.is-open .envelope-flap{transform:translate(-50%)}.envelope-letter.is-open:before{-webkit-backdrop-filter:none;backdrop-filter:none}}
