.shell { position: relative; min-height: var(--app-viewport-height, 100dvh); padding: 0 0 calc(var(--app-safe-bottom, 0px) + 96px) 0; overflow: hidden auto; background: radial-gradient(circle at 12% 10%, rgba(255, 193, 121, 0.32), transparent 30%), radial-gradient(circle at 90% 4%, rgba(255, 91, 148, 0.22), transparent 28%), linear-gradient(180deg, #fff7ed 0%, #fff8f6 42%, #ffffff 100%); color: #21171b; } .backgroundGlowOne, .backgroundGlowTwo { position: absolute; z-index: 0; pointer-events: none; border-radius: 999px; filter: blur(8px); } .backgroundGlowOne { top: 118px; right: -82px; width: 170px; height: 170px; background: rgba(255, 93, 149, 0.16); } .backgroundGlowTwo { bottom: 92px; left: -92px; width: 190px; height: 190px; background: rgba(255, 188, 92, 0.18); } .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, .loadMoreButton { 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: auto; margin: 0 calc(var(--app-safe-right, 0px) + clamp(18px, 5.185vw, 28px)) 0 calc(var(--app-safe-left, 0px) + clamp(18px, 5.185vw, 28px)); min-height: 40px; padding: 0 16px; background: linear-gradient(135deg, #928e89, #72706c); color: #ffffff; font-size: clamp(12px, 3.148vw, 15px); box-shadow: 0 10px 22px rgba(47, 35, 40, 0.12); } .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: 14px; object-fit: cover; 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 { display: grid; width: 100%; grid-template-columns: auto 1fr; align-items: center; gap: 14px; margin-top: 14px; padding: clamp(16px, 4.074vw, 22px); border: 1px solid rgba(255, 116, 159, 0.24); border-radius: clamp(20px, 5.185vw, 28px); background: linear-gradient(135deg, rgba(255, 246, 239, 0.98), rgba(255, 231, 240, 0.9)), #ffffff; color: #21171b; cursor: pointer; font: inherit; text-align: left; box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.8), 0 12px 28px rgba(255, 116, 159, 0.12); transition: border-color 0.18s ease, box-shadow 0.18s ease, transform 0.18s ease; } .lockedPreview:disabled { cursor: wait; opacity: 0.72; } .previewIcon { display: grid; width: 46px; height: 46px; place-items: center; border-radius: 17px; background: linear-gradient(135deg, #ff7aa9, #ffb36d); color: #ffffff; box-shadow: 0 12px 24px rgba(255, 104, 146, 0.24); } .previewText { display: flex; min-width: 0; flex-direction: column; gap: 4px; } .previewText strong { color: #21171b; font-size: clamp(16px, 4.074vw, 21px); font-weight: 930; line-height: 1.05; } .previewText span { color: #4c3a40; font-size: clamp(13px, 3.333vw, 17px); font-weight: 780; } .previewText small { display: inline-flex; align-items: center; gap: 5px; color: #a94c64; font-size: clamp(12px, 2.963vw, 15px); font-weight: 760; } .imageGrid { display: grid; grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)); gap: 10px; margin-top: 14px; } .unlockedImage { width: 100%; height: auto; aspect-ratio: 1; border-radius: 22px; object-fit: cover; box-shadow: 0 14px 32px rgba(131, 72, 85, 0.14); } .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, .loadMoreButton { padding: 0 18px; background: rgba(255, 93, 149, 0.12); color: #a94c64; } .loadMoreButton { width: 100%; margin-top: 16px; } .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) + 92px); 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, .lockedPreview:hover, .loadMoreButton:hover { filter: brightness(1.04); transform: translateY(-1px); } .primaryCta:active, .lockedPreview:active, .loadMoreButton:active { transform: translateY(1px) scale(0.99); } .primaryCta:focus-visible, .lockedPreview:focus-visible, .loadMoreButton: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); } }