.shell { position: relative; min-height: var(--app-viewport-height, 100dvh); padding: 0 0 calc( var(--app-safe-bottom, 0px) + var(--app-bottom-nav-height, 64px) + var(--page-section-gap, 18px) ) 0; overflow: hidden auto; background: radial-gradient(circle at 12% 10%, rgba(255, 255, 255, 0.82), transparent 32%), radial-gradient(circle at 90% 4%, rgba(210, 214, 211, 0.3), transparent 30%), linear-gradient(180deg, #f3f4f2 0%, #f7f7f5 46%, #fbfbfa 100%); color: #21171b; } .backgroundGlowOne, .backgroundGlowTwo { position: absolute; z-index: 0; pointer-events: none; border-radius: 999px; filter: blur(8px); } .favoriteAction { position: absolute; top: calc(var(--app-safe-top, 0px) + 14px); right: calc(var(--app-safe-right, 0px) + 14px); z-index: 5; } .backgroundGlowOne { top: 118px; right: -82px; width: 170px; height: 170px; background: rgba(190, 195, 191, 0.18); } .backgroundGlowTwo { bottom: 92px; left: -92px; width: 190px; height: 190px; background: rgba(222, 224, 220, 0.3); } .hero, .postsSection { position: relative; z-index: 1; } .hero { display: flex; flex-direction: column; gap: 12px; margin: 0; animation: riseIn 0.45s ease both; } .heroCover { position: relative; min-height: clamp(220px, 66vw, 350px); overflow: hidden; background: #f1eeee; isolation: isolate; } .heroBanner { position: absolute; inset: 0; z-index: 0; width: 100%; height: 100%; object-fit: cover; transform: scale(1.01); animation: coverEaseIn 0.75s ease both; } .identity { position: absolute; bottom: 14px; left: calc(var(--app-safe-left, 0px) + clamp(14px, 3.704vw, 20px)); z-index: 2; display: flex; width: fit-content; max-width: calc(100% - var(--app-safe-left, 0px) - var(--app-safe-right, 0px) - clamp(28px, 7.407vw, 40px)); min-height: 42px; align-items: center; gap: 7px; padding: 5px 10px 5px 5px; border: 1px solid rgba(255, 255, 255, 0.72); border-radius: 999px; background: rgba(255, 255, 255, 0.82); box-shadow: 0 10px 24px rgba(39, 28, 32, 0.1); backdrop-filter: blur(16px); animation: riseIn 0.45s ease both; animation-delay: 80ms; } .avatarFrame { display: grid; width: 32px; height: 32px; flex: 0 0 auto; place-items: center; border: 2px solid rgba(255, 255, 255, 0.92); border-radius: 9999px; background: linear-gradient(145deg, #ffb36d, #ff5d95); box-shadow: 0 6px 14px rgba(131, 72, 85, 0.12); overflow: hidden; } .identityName { min-width: 0; margin: 0; overflow: hidden; color: #33282b; font-size: clamp(11px, 2.963vw, 14px); font-weight: 760; line-height: 1.2; text-overflow: ellipsis; white-space: nowrap; } .primaryCta { display: inline-flex; min-height: 48px; align-items: center; justify-content: center; gap: 9px; border: 0; border-radius: 999px; cursor: pointer; font: inherit; font-weight: 850; transition: transform 0.18s ease, box-shadow 0.18s ease, filter 0.18s ease; } .primaryCta { width: calc(100% - var(--app-safe-left, 0px) - var(--app-safe-right, 0px) - clamp(36px, 10.37vw, 56px)); align-self: center; margin: 0 auto; min-height: 50px; padding: 0 clamp(20px, 5.185vw, 28px); border: 1px solid rgba(255, 255, 255, 0.48); background: linear-gradient(135deg, rgba(255, 255, 255, 0.16), transparent 38%), linear-gradient(90deg, #ff67e0, var(--color-accent, #f84d96)); color: #ffffff; font-size: clamp(14px, 3.333vw, 16px); line-height: 1.2; box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.24), 0 14px 30px rgba(248, 77, 150, 0.26); } .primaryCta span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .postsSection { margin-top: clamp(20px, 5.185vw, 28px); padding: 0 calc(var(--app-safe-right, 0px) + clamp(18px, 5.185vw, 28px)) 0 calc(var(--app-safe-left, 0px) + clamp(18px, 5.185vw, 28px)); } .sectionHeader { display: flex; align-items: flex-end; justify-content: space-between; gap: 14px; margin-bottom: 14px; } .kicker { margin: 0; color: #ff5d95; font-size: clamp(11px, 2.593vw, 13px); font-weight: 900; letter-spacing: 0.14em; text-transform: uppercase; } .sectionTitle { margin: 4px 0 0; color: #25191d; font-size: clamp(21px, 5.185vw, 28px); font-weight: 900; letter-spacing: -0.03em; } .postCount { display: inline-flex; min-width: 42px; height: 34px; align-items: center; justify-content: center; border: 1px solid rgba(255, 116, 159, 0.18); border-radius: 999px; background: rgba(255, 255, 255, 0.78); color: #a94c64; font-size: 14px; font-weight: 880; box-shadow: 0 8px 18px rgba(131, 72, 85, 0.08); } .timeline { display: flex; flex-direction: column; gap: 14px; } .postCard, .statusCard { border: 1px solid rgba(44, 29, 34, 0.07); border-radius: clamp(22px, 5.926vw, 32px); background: rgba(255, 255, 255, 0.86); box-shadow: 0 16px 42px rgba(131, 72, 85, 0.1); backdrop-filter: blur(18px); } .postCard { padding: clamp(14px, 3.704vw, 20px); animation: riseIn 0.42s ease both; animation-delay: calc(var(--reveal-index, 0) * 90ms + 80ms); } .postHeader { display: flex; align-items: center; justify-content: space-between; gap: 12px; } .postAuthor { display: flex; min-width: 0; align-items: center; gap: 11px; } .postAvatar { flex: 0 0 auto; border: 2px solid rgba(255, 255, 255, 0.9); border-radius: 9999px; box-shadow: 0 8px 18px rgba(131, 72, 85, 0.12); } .authorName, .authorSubline, .postText { margin: 0; } .authorName { color: #26191d; font-size: clamp(14px, 3.333vw, 17px); font-weight: 820; line-height: 1.15; } .authorSubline { margin-top: 3px; color: #a58b92; font-size: clamp(11px, 2.778vw, 13px); font-weight: 680; } .postTime { flex: 0 0 auto; color: #7b666d; font-size: clamp(12px, 2.963vw, 15px); font-weight: 760; } .postText { margin-top: 14px; color: #4c3a40; font-size: clamp(14px, 3.333vw, 17px); font-weight: 650; line-height: 1.55; } .lockedPreview { position: relative; width: 100%; aspect-ratio: 4 / 5; margin-top: 14px; border: 1px solid rgba(255, 255, 255, 0.2); border-radius: clamp(20px, 5.185vw, 26px); background: radial-gradient(circle at 72% 18%, rgba(184, 141, 113, 0.72), transparent 42%), radial-gradient(circle at 18% 32%, rgba(79, 78, 105, 0.78), transparent 48%), linear-gradient(160deg, #615d6d 0%, #6c5b50 48%, #c5c0b6 100%); color: #ffffff; isolation: isolate; overflow: hidden; text-align: center; box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.12), 0 16px 34px rgba(34, 25, 29, 0.18); } .lockedPreviewBackdrop { position: absolute; inset: 0; z-index: 0; } .lockedCoverImage { object-fit: cover; object-position: center; filter: blur(13px) saturate(0.8); transform: scale(1.05); } .lockedPreviewScrim { position: absolute; inset: 0; z-index: 1; background: linear-gradient(180deg, rgba(23, 21, 25, 0.12), rgba(28, 25, 27, 0.18) 48%, rgba(36, 31, 30, 0.3)), rgba(32, 29, 34, 0.14); } .lockedPreviewPanel { position: absolute; top: 40%; right: clamp(8px, 2.593vw, 14px); left: clamp(8px, 2.593vw, 14px); z-index: 2; min-height: clamp(190px, 48vw, 226px); padding: clamp(48px, 12.222vw, 60px) clamp(18px, 4.63vw, 25px) clamp(20px, 5.185vw, 28px); border: 1px solid rgba(255, 255, 255, 0.13); border-radius: clamp(18px, 4.815vw, 25px); background: rgba(32, 30, 35, 0.62); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.08), 0 14px 32px rgba(19, 16, 18, 0.2); backdrop-filter: blur(14px); } .lockedPreviewContent { display: flex; width: min(100%, 300px); margin-inline: auto; flex-direction: column; align-items: center; gap: 8px; } .lockedCollectionIcon { position: absolute; top: 14px; left: 14px; z-index: 3; display: grid; width: 28px; height: 28px; place-items: center; border: 1px solid rgba(255, 255, 255, 0.36); border-radius: 7px; background: rgba(24, 23, 28, 0.52); color: #ffffff; box-shadow: 0 5px 14px rgba(0, 0, 0, 0.2); backdrop-filter: blur(10px); } .lockedPreviewAvatarFrame { position: absolute; top: clamp(-36px, -8.148vw, -31px); left: 50%; z-index: 4; width: clamp(62px, 17.037vw, 72px); height: clamp(62px, 17.037vw, 72px); border: 3px solid rgba(255, 255, 255, 0.94); border-radius: 999px; background: #ffffff; box-shadow: 0 12px 28px rgba(29, 21, 25, 0.28); transform: translateX(-50%); } .lockedPreviewAvatar { border-radius: 999px; } .lockedAvatarBadge { position: absolute; right: -3px; bottom: 0; display: grid; width: clamp(24px, 6.296vw, 28px); height: clamp(24px, 6.296vw, 28px); place-items: center; border: 2px solid rgba(255, 255, 255, 0.94); border-radius: 999px; background: #ffffff; color: #29262d; box-shadow: 0 6px 14px rgba(22, 17, 19, 0.2); } .lockedPreviewTitle { color: #ffffff; font-size: clamp(19px, 4.815vw, 26px); font-weight: 850; line-height: 1.15; text-shadow: 0 2px 12px rgba(0, 0, 0, 0.28); } .lockedImageCount { display: inline-flex; align-items: center; justify-content: center; gap: 7px; color: rgba(255, 255, 255, 0.92); font-size: clamp(14px, 3.333vw, 17px); font-weight: 620; line-height: 1.2; } .lockedPreviewCta { min-width: min(100%, 178px); min-height: 46px; margin-top: clamp(16px, 4.074vw, 22px); padding: 0 24px; border: 0; border-radius: 999px; background: #ffffff; color: #28252a; cursor: pointer; font: inherit; font-size: clamp(14px, 3.519vw, 17px); font-weight: 850; box-shadow: 0 10px 24px rgba(18, 14, 16, 0.22); transition: transform 0.16s ease, box-shadow 0.16s ease, background 0.16s ease; } .lockedPreviewCta:disabled { cursor: wait; opacity: 0.72; } .mediaGrid { display: grid; gap: 4px; margin-top: 14px; } .mediaGridSingle { width: min(72%, 280px); grid-template-columns: minmax(0, 1fr); } .mediaGridDouble { width: min(72%, 320px); grid-template-columns: repeat(2, minmax(0, 1fr)); } .mediaGridTriple { width: 100%; grid-template-columns: repeat(3, minmax(0, 1fr)); } .mediaGridItem { position: relative; display: block; width: 100%; aspect-ratio: 1; padding: 0; border: 0; overflow: hidden; border-radius: 6px; background: #f3eef0; cursor: pointer; font: inherit; transition: filter 0.16s ease, transform 0.16s ease; } .mediaGridSingle .mediaGridItem { aspect-ratio: 4 / 5; } .mediaGridImage { object-fit: cover; user-select: none; } .mediaGridOverflow { position: absolute; inset: 0; z-index: 1; display: flex; align-items: center; justify-content: center; background: rgba(24, 18, 21, 0.56); color: #ffffff; font-size: clamp(22px, 6.296vw, 34px); font-weight: 760; letter-spacing: -0.02em; text-shadow: 0 2px 12px rgba(0, 0, 0, 0.34); } .emptyMediaCover { display: grid; width: 100%; aspect-ratio: 4 / 5; place-items: center; align-content: center; gap: 10px; margin-top: 14px; border: 1px solid rgba(44, 29, 34, 0.08); border-radius: clamp(20px, 5.185vw, 28px); background: linear-gradient(145deg, #f7f2ef, #efe7e9); color: #8d747c; font-size: 14px; font-weight: 760; } .statusCard { display: grid; gap: 12px; margin-bottom: 14px; padding: 18px; color: #755f66; font-size: 15px; font-weight: 700; text-align: center; } .statusCard p { margin: 0; } .statusCard button { padding: 0 18px; background: rgba(255, 93, 149, 0.12); color: #a94c64; } .galleryOverlay { position: fixed; inset: 0; z-index: 80; width: min(100vw, var(--app-max-width, 540px)); height: var(--app-viewport-height, 100dvh); margin-inline: auto; overflow: hidden; background: #090909; color: #ffffff; overscroll-behavior: contain; } .galleryViewport { position: absolute; inset: 0; overflow: hidden; cursor: grab; touch-action: pan-y; user-select: none; } .galleryViewport[data-dragging="true"] { cursor: grabbing; } .gallerySlide { position: absolute; inset: 0; pointer-events: none; transform: translate3d( calc(var(--gallery-slide-offset, 0%) + var(--gallery-drag-offset, 0px)), 0, 0 ); transition: transform 240ms cubic-bezier(0.22, 1, 0.36, 1); will-change: transform; } .galleryViewport[data-dragging="true"] .gallerySlide { transition: none; } .galleryImage { object-fit: contain; user-select: none; } .galleryClose, .galleryNav { position: absolute; z-index: 2; display: grid; place-items: center; padding: 0; border: 1px solid rgba(255, 255, 255, 0.18); border-radius: 999px; background: rgba(16, 16, 16, 0.58); color: #ffffff; cursor: pointer; backdrop-filter: blur(12px); transition: background 0.18s ease, transform 0.18s ease; } .galleryClose { top: calc(var(--app-safe-top, 0px) + 14px); right: calc(var(--app-safe-right, 0px) + 14px); width: 44px; height: 44px; } .galleryNav { top: 50%; width: 46px; height: 46px; transform: translateY(-50%); } .galleryPrevious { left: calc(var(--app-safe-left, 0px) + 10px); } .galleryNext { right: calc(var(--app-safe-right, 0px) + 10px); } .galleryCounter { position: absolute; bottom: calc(var(--app-safe-bottom, 0px) + 18px); left: 50%; z-index: 2; min-width: 62px; padding: 8px 12px; border-radius: 999px; background: rgba(16, 16, 16, 0.62); font-size: 13px; font-weight: 800; text-align: center; transform: translateX(-50%); backdrop-filter: blur(12px); } .dialogOverlay { position: fixed; inset: 0; z-index: 40; display: grid; place-items: center; padding: 24px; background: rgba(34, 23, 28, 0.36); backdrop-filter: blur(10px); } .dialog { width: min(100%, 360px); padding: 22px; border-radius: 26px; background: #ffffff; box-shadow: 0 24px 70px rgba(34, 23, 28, 0.22); } .dialogTitle { margin: 0; color: #21171b; font-size: 22px; font-weight: 900; } .dialogCopy, .dialogError { margin: 10px 0 0; color: #755f66; font-size: 15px; font-weight: 650; line-height: 1.45; } .dialogError { color: #c63f67; } .dialogActions { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-top: 20px; } .dialogPrimary, .dialogSecondary { min-height: 46px; border: 0; border-radius: 999px; cursor: pointer; font: inherit; font-weight: 850; } .dialogPrimary { background: linear-gradient(135deg, #ff7aa9, #ffb36d); color: #ffffff; } .dialogSecondary { background: rgba(44, 29, 34, 0.08); color: #5f4b52; } .toast { position: fixed; right: max(calc((100vw - var(--app-max-width, 540px)) / 2 + 18px), 18px); bottom: calc( var(--app-safe-bottom, 0px) + var(--app-bottom-nav-height, 64px) + 12px ); left: max(calc((100vw - var(--app-max-width, 540px)) / 2 + 18px), 18px); z-index: 45; padding: 14px 16px; border-radius: 18px; background: rgba(33, 23, 27, 0.88); color: #ffffff; font-size: 14px; font-weight: 750; text-align: center; } .primaryCta:hover { filter: brightness(1.04); transform: translateY(-1px); } .lockedPreviewCta:hover:not(:disabled) { background: #f7f5f6; box-shadow: 0 12px 28px rgba(18, 14, 16, 0.28); transform: translateY(-1px); } .mediaGridItem:hover { filter: brightness(1.02); } .galleryClose:hover, .galleryNav:hover { background: rgba(38, 38, 38, 0.82); } .primaryCta:active { transform: translateY(1px) scale(0.99); } .lockedPreviewCta:active:not(:disabled) { transform: translateY(1px) scale(0.99); } .mediaGridItem:active { transform: scale(0.995); } .galleryClose:active { transform: scale(0.94); } .galleryNav:active { transform: translateY(-50%) scale(0.94); } .primaryCta:focus-visible, .lockedPreviewCta:focus-visible, .mediaGridItem:focus-visible, .galleryClose:focus-visible, .galleryNav:focus-visible, .dialogPrimary:focus-visible, .dialogSecondary:focus-visible { outline: 2px solid #ff5d95; outline-offset: 3px; } @keyframes riseIn { from { opacity: 0; transform: translateY(12px); } to { opacity: 1; transform: translateY(0); } } @keyframes coverEaseIn { from { opacity: 0.82; transform: scale(1.05); } to { opacity: 1; transform: scale(1.01); } } @media (prefers-reduced-motion: reduce) { .gallerySlide { transition: none; } }