HOME / style.css
syedazah777's picture
Build Small Hackathon Final Submission
ec3e1b1
Raw
History Blame Contribute Delete
68.8 kB
@import url("https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght@9..144,700;9..144,900&family=Inter:wght@500;700;800;900&display=swap");
@tailwind base;
@tailwind components;
@tailwind utilities;
@layer base {
* {
box-sizing: border-box;
}
html,
body,
#root {
width: 100%;
height: 100%;
margin: 0;
overflow: hidden;
background: #1d1712;
}
button,
textarea {
font: inherit;
}
}
@layer components {
.home-stage {
--px: 0px;
--py: 0px;
position: fixed;
inset: 0;
overflow: hidden;
color: #4e3320;
font-family: Inter, system-ui, sans-serif;
perspective: 1400px;
background: #1d1712;
isolation: isolate;
}
.scene-video {
position: absolute;
inset: -2.4vh -2.4vw;
z-index: 0;
width: 104.8vw;
height: 104.8vh;
object-fit: cover;
opacity: 0;
transform:
translate3d(calc(var(--px) * -0.18), calc(var(--py) * -0.12), 0)
scale(1.05);
filter: saturate(1.08) contrast(1.04) brightness(0.88);
transition: opacity 760ms ease, transform 1300ms cubic-bezier(0.19, 1, 0.22, 1), filter 760ms ease;
}
.scene-video.is-active {
opacity: 1;
transform:
translate3d(calc(var(--px) * -0.06), calc(var(--py) * -0.04), 0)
scale(1);
}
.scene-kitchen .scene-video.is-active {
filter: saturate(1.12) contrast(1.03) brightness(0.96);
}
.scene-backyard .scene-video.is-active {
filter: saturate(1.06) contrast(1.02) brightness(0.9);
}
.scene-study {
background:
radial-gradient(circle at 58% 32%, rgba(255, 232, 173, 0.26), transparent 28%),
linear-gradient(180deg, #8a6140, #5b3a25 52%, #2d1d15);
}
.scene-vignette {
position: absolute;
inset: 0;
z-index: 3;
pointer-events: none;
background:
radial-gradient(circle at 50% 44%, transparent 0 35%, rgba(51, 30, 15, 0.08) 56%, rgba(22, 14, 9, 0.54) 100%),
linear-gradient(180deg, rgba(255, 224, 149, 0.1), rgba(22, 14, 9, 0.18));
}
.weather-layer,
.firefly-layer {
position: absolute;
inset: 0;
z-index: 4;
pointer-events: none;
overflow: hidden;
}
.weather-layer i {
position: absolute;
top: -16vh;
width: 2px;
height: 16vh;
border-radius: 999px;
background: rgba(255, 244, 216, 0.36);
animation: rainFall 1.35s linear infinite;
}
.weather-layer i:nth-child(1) { left: 6%; animation-delay: -0.2s; }
.weather-layer i:nth-child(2) { left: 18%; animation-delay: -0.8s; }
.weather-layer i:nth-child(3) { left: 31%; animation-delay: -0.4s; }
.weather-layer i:nth-child(4) { left: 47%; animation-delay: -1.1s; }
.weather-layer i:nth-child(5) { left: 64%; animation-delay: -0.6s; }
.weather-layer i:nth-child(6) { left: 76%; animation-delay: -1.3s; }
.weather-layer i:nth-child(7) { left: 87%; animation-delay: -0.1s; }
.weather-layer i:nth-child(8) { left: 96%; animation-delay: -0.9s; }
.firefly-layer i {
position: absolute;
width: 8px;
height: 8px;
border-radius: 50%;
background: #ffe69a;
box-shadow: 0 0 22px rgba(255, 220, 112, 0.96);
animation: firefly 6.5s ease-in-out infinite;
}
.firefly-layer i:nth-child(1) { left: 12%; top: 68%; animation-delay: -0.4s; }
.firefly-layer i:nth-child(2) { left: 26%; top: 42%; animation-delay: -1.1s; }
.firefly-layer i:nth-child(3) { left: 66%; top: 61%; animation-delay: -2.2s; }
.firefly-layer i:nth-child(4) { left: 82%; top: 33%; animation-delay: -3.1s; }
.firefly-layer i:nth-child(5) { left: 42%; top: 78%; animation-delay: -4.1s; }
.firefly-layer i:nth-child(6) { left: 55%; top: 24%; animation-delay: -5.3s; }
.travel-warmth {
position: fixed;
inset: 0;
z-index: 90;
pointer-events: none;
opacity: 0;
background: radial-gradient(circle at center, #fff0b9 0%, rgba(246, 178, 76, 0.82) 30%, rgba(98, 58, 28, 0.1) 64%, transparent 100%);
}
.is-traveling .travel-warmth {
animation: warmTravel 920ms ease both;
}
.scene-layer {
position: absolute;
inset: 0;
z-index: 10;
transform:
translate3d(calc(var(--px) * 0.08), calc(var(--py) * 0.05), 80px)
rotateX(calc(var(--py) * 0.012deg))
rotateY(calc(var(--px) * -0.012deg));
transition: transform 400ms cubic-bezier(0.19, 1, 0.22, 1);
}
.arrival-title {
position: absolute;
left: clamp(28px, 8vw, 118px);
bottom: clamp(34px, 9vh, 92px);
width: min(520px, 86vw);
color: #fff3d1;
text-shadow: 0 16px 32px rgba(25, 14, 8, 0.48);
animation: sceneArrive 780ms ease both;
}
.arrival-title p,
.scene-note,
.room-nav button {
letter-spacing: 0.14em;
text-transform: uppercase;
}
.arrival-title p {
margin: 0 0 10px;
color: #f7ca78;
font-size: 12px;
font-weight: 950;
}
.arrival-title h1 {
margin: 0;
font-family: Fraunces, Georgia, serif;
font-size: clamp(66px, 11vw, 140px);
font-weight: 900;
line-height: 0.84;
}
.arrival-title span {
display: block;
margin-top: 18px;
color: #fff6dc;
font-family: Fraunces, Georgia, serif;
font-size: clamp(22px, 3vw, 38px);
font-weight: 900;
line-height: 1;
}
.arrival-title button,
.mom-desk button,
.mom-reopen,
.memory-actions button,
.tidy-hallway,
.note-desk button,
.backyard-note button,
.hallway-door,
.backyard-door,
.kitchen-return {
border: 4px solid #6e4429;
border-radius: 999px;
background: linear-gradient(#ffe8ad, #f3ad56);
color: #4e3320;
box-shadow: 0 22px 42px rgba(31, 18, 10, 0.3), inset 0 2px rgba(255, 255, 255, 0.52);
cursor: pointer;
font-weight: 950;
transition: transform 230ms ease, filter 230ms ease, box-shadow 230ms ease;
}
.arrival-title button {
margin-top: 30px;
padding: 16px 25px;
font-size: 15px;
letter-spacing: 0.1em;
text-transform: uppercase;
}
.arrival-title button:hover,
.mom-desk button:hover,
.mom-reopen:hover,
.memory-actions button:hover,
.tidy-hallway:hover,
.note-desk button:hover,
.backyard-note button:hover,
.hallway-door:hover,
.backyard-door:hover,
.kitchen-return:hover,
.room-nav button:hover {
filter: brightness(1.06);
transform: translateY(-5px) scale(1.02);
}
.door-hotspot {
position: absolute;
left: 45%;
bottom: 12%;
width: 15vw;
max-width: 180px;
min-width: 94px;
height: 28vh;
min-height: 160px;
border: 0;
border-radius: 42% 42% 6% 6%;
background: radial-gradient(circle at 50% 50%, rgba(255, 214, 128, 0.2), transparent 68%);
cursor: pointer;
opacity: 0.55;
filter: blur(1px);
animation: doorPulse 3s ease-in-out infinite;
}
.door-hotspot:hover {
opacity: 1;
box-shadow: 0 0 100px rgba(255, 199, 97, 0.45);
}
.room-nav {
position: fixed;
top: 18px;
left: 50%;
z-index: 30;
display: flex;
flex-wrap: wrap;
justify-content: center;
gap: 8px;
width: max-content;
max-width: min(920px, calc(100vw - 28px));
translate: -50% 0;
border: 3px solid rgba(104, 65, 41, 0.72);
border-radius: 999px;
background: rgba(255, 238, 197, 0.5);
padding: 7px;
box-shadow: 0 18px 40px rgba(30, 17, 9, 0.26), inset 0 1px rgba(255, 255, 255, 0.55);
backdrop-filter: blur(12px) saturate(130%);
}
.scene-arrival .room-nav {
opacity: 0;
pointer-events: none;
}
.room-nav button {
border: 0;
border-radius: 999px;
background: rgba(255, 246, 220, 0.72);
padding: 10px 13px;
color: #563820;
font-size: 11px;
font-weight: 950;
cursor: pointer;
}
.room-nav button.locked {
opacity: 0.52;
filter: grayscale(0.35);
}
.mom-desk {
position: absolute;
z-index: 28;
left: clamp(18px, 3vw, 52px);
bottom: clamp(18px, 4vh, 42px);
display: grid;
width: min(360px, 30vw);
min-width: 292px;
gap: 10px;
border: 5px solid rgba(94, 55, 31, 0.86);
border-radius: 28px 16px 32px 18px;
background:
radial-gradient(circle at 18% 12%, rgba(255, 255, 255, 0.56), transparent 22%),
rgba(255, 244, 216, 0.76);
padding: 13px;
box-shadow: 0 34px 64px rgba(35, 19, 9, 0.34), inset 0 2px rgba(255, 255, 255, 0.58);
backdrop-filter: blur(7px) saturate(135%);
}
.mom-desk::before {
content: "👩";
position: absolute;
right: -22px;
top: -26px;
display: grid;
width: 58px;
height: 58px;
place-items: center;
border: 4px solid #704529;
border-radius: 50% 44% 48% 42%;
background: #ffe8ad;
box-shadow: 0 16px 24px rgba(31, 18, 10, 0.24);
font-size: 31px;
pointer-events: none;
}
.mom-desk-header {
position: relative;
z-index: 2;
display: flex;
align-items: center;
justify-content: space-between;
gap: 12px;
padding-right: 42px;
}
.mom-desk-header button {
padding: 6px 10px;
font-size: 10px;
}
.mom-desk button:disabled {
cursor: progress;
opacity: 0.72;
transform: none;
}
.mom-reopen {
position: absolute;
z-index: 24;
left: clamp(18px, 3vw, 52px);
bottom: clamp(18px, 4vh, 42px);
display: grid;
min-width: 180px;
gap: 4px;
padding: 14px 18px;
text-align: left;
}
.mom-reopen span {
font-size: 30px;
}
.mom-reopen small {
display: inline-block;
color: #765338;
font-size: 10px;
font-weight: 950;
letter-spacing: 0.08em;
text-transform: uppercase;
}
.kitchen-object-rail {
position: absolute;
z-index: 23;
left: clamp(22px, 4vw, 66px);
top: clamp(82px, 13vh, 128px);
display: flex;
gap: 10px;
align-items: center;
}
.kitchen-object-rail button {
display: grid;
min-width: 92px;
place-items: center;
border: 4px solid #704529;
border-radius: 20px 11px 23px 13px;
background: rgba(255, 244, 216, 0.84);
color: #563820;
padding: 9px;
box-shadow: 0 20px 34px rgba(29, 15, 8, 0.26), inset 0 2px rgba(255, 255, 255, 0.45);
cursor: pointer;
font-size: 11px;
font-weight: 950;
backdrop-filter: blur(6px) saturate(125%);
transition: transform 220ms ease, filter 220ms ease;
}
.kitchen-object-rail button:hover {
filter: brightness(1.06);
transform: translateY(-7px) rotate(-1deg);
}
.kitchen-object-rail span {
font-size: 31px;
filter: drop-shadow(0 8px 8px rgba(61, 35, 18, 0.2));
}
.kitchen-table {
position: absolute;
z-index: 16;
left: 38%;
bottom: 7vh;
width: min(420px, 34vw);
min-height: 220px;
border: 5px solid rgba(100, 61, 35, 0.8);
border-radius: 50% 46% 28px 30px;
background:
repeating-linear-gradient(8deg, rgba(255, 222, 162, 0.12) 0 8px, transparent 8px 18px),
radial-gradient(ellipse at center, rgba(139, 86, 46, 0.84), rgba(91, 52, 28, 0.92));
padding: 18px;
box-shadow: 0 34px 0 rgba(63, 34, 17, 0.22), 0 44px 70px rgba(29, 15, 8, 0.34), inset 0 8px rgba(255, 224, 160, 0.2);
transform: rotateX(9deg) rotateZ(-1deg);
}
.kitchen-table header {
display: flex;
justify-content: space-between;
gap: 12px;
color: #fff2d1;
font-size: 12px;
font-weight: 950;
text-shadow: 0 2px 8px rgba(33, 17, 8, 0.55);
}
.kitchen-table header span {
opacity: 0.8;
font-size: 10px;
letter-spacing: 0.12em;
text-transform: uppercase;
}
.artifact-spread {
position: relative;
min-height: 154px;
}
.empty-table {
margin: 30px auto 0;
max-width: 260px;
color: #ffe8b5;
font-family: Fraunces, Georgia, serif;
font-size: 17px;
font-weight: 900;
line-height: 1.15;
text-align: center;
}
.table-card {
position: absolute;
display: grid;
width: 122px;
min-height: 106px;
place-items: center;
border: 4px solid #704529;
border-radius: 18px 11px 20px 12px;
background: #fff4d8;
color: #65412a;
padding: 9px;
box-shadow: 0 14px 20px rgba(48, 24, 10, 0.28);
cursor: pointer;
animation: objectAppear 420ms cubic-bezier(0.19, 1, 0.22, 1), noteFloat 5s ease-in-out infinite;
}
.table-card span {
font-size: 34px;
}
.table-card strong {
font-family: Fraunces, Georgia, serif;
font-size: 13px;
line-height: 1;
}
.table-card-1 { left: 4%; top: 18%; rotate: -8deg; }
.table-card-2 { left: 34%; top: 32%; rotate: 5deg; }
.table-card-3 { right: 4%; top: 12%; rotate: -2deg; }
.table-card-4 { left: 16%; bottom: 2%; rotate: 7deg; }
.table-card-5 { right: 17%; bottom: 0; rotate: -6deg; }
.mom-drawer {
position: absolute;
z-index: 24;
left: clamp(26px, 5vw, 90px);
top: clamp(78px, 14vh, 132px);
display: flex;
align-items: center;
gap: 9px;
border: 4px solid #704529;
border-radius: 22px 12px 24px 13px;
background: rgba(119, 72, 39, 0.82);
color: #fff0c8;
padding: 12px 14px;
box-shadow: 0 20px 34px rgba(29, 15, 8, 0.3), inset 0 2px rgba(255, 255, 255, 0.2);
cursor: pointer;
font-weight: 950;
backdrop-filter: blur(5px);
}
.mom-drawer span {
font-size: 28px;
}
.drawer-find,
.inventory-shelf,
.garden-progress {
position: absolute;
z-index: 26;
border: 5px solid rgba(100, 61, 35, 0.86);
border-radius: 24px 14px 28px 16px;
background: rgba(255, 244, 216, 0.82);
padding: 14px;
box-shadow: 0 26px 46px rgba(28, 15, 8, 0.28), inset 0 2px rgba(255, 255, 255, 0.52);
backdrop-filter: blur(7px) saturate(125%);
}
.drawer-find {
left: clamp(26px, 5vw, 90px);
top: clamp(150px, 25vh, 240px);
width: min(290px, 28vw);
animation: slipIn 300ms ease both;
}
.drawer-find span {
font-size: 44px;
}
.drawer-find strong,
.inventory-shelf strong,
.garden-progress strong {
display: block;
color: #563820;
font-family: Fraunces, Georgia, serif;
font-size: 20px;
font-weight: 900;
}
.drawer-find p {
margin: 7px 0 0;
color: #68452d;
font-size: 13px;
font-weight: 800;
}
.paper-modal {
rotate: -2deg;
background:
repeating-linear-gradient(180deg, transparent 0 22px, rgba(120, 80, 45, 0.1) 22px 24px),
#fff4d8;
}
.paper-close {
justify-self: end;
border: 3px solid #8a5a36;
border-radius: 999px;
background: #ffe8ad;
color: #65412a;
padding: 5px 9px;
cursor: pointer;
font-size: 10px;
font-weight: 950;
}
.inventory-shelf {
right: clamp(24px, 5vw, 84px);
bottom: clamp(24px, 4vh, 46px);
width: min(300px, 28vw);
}
.inventory-shelf div {
display: flex;
min-height: 42px;
flex-wrap: wrap;
gap: 7px;
align-items: center;
margin-top: 8px;
}
.inventory-shelf button {
display: grid;
min-width: 58px;
gap: 2px;
place-items: center;
border: 3px solid #8a5a36;
border-radius: 14px 8px 15px 9px;
background: #fff7df;
color: #65412a;
padding: 5px;
cursor: pointer;
box-shadow: 0 8px 12px rgba(82, 47, 26, 0.12);
transition: transform 180ms ease;
}
.inventory-shelf button:hover {
transform: translateY(-5px) rotate(-2deg);
}
.inventory-shelf button span {
display: grid;
width: 38px;
height: 38px;
place-items: center;
font-size: 21px;
}
.inventory-shelf small {
color: #765338;
font-size: 9px;
font-weight: 850;
}
.mom-desk label,
.note-desk label,
.backyard-note label {
color: #715035;
font-size: 12px;
font-weight: 950;
letter-spacing: 0.13em;
text-transform: uppercase;
}
.mom-thread {
display: flex;
max-height: min(230px, 26vh);
min-height: 120px;
flex-direction: column;
gap: 9px;
overflow-y: auto;
overscroll-behavior: contain;
padding-right: 5px;
scroll-behavior: smooth;
}
.mom-thread::-webkit-scrollbar {
width: 8px;
}
.mom-thread::-webkit-scrollbar-thumb {
border: 2px solid rgba(255, 247, 223, 0.8);
border-radius: 999px;
background: #a87348;
}
.speech-slip {
max-width: 96%;
margin: 0;
border: 3px solid #8a5a36;
border-radius: 22px 14px 24px 12px;
background: rgba(255, 249, 232, 0.9);
padding: 12px 14px;
color: #67452e;
font-family: Fraunces, Georgia, serif;
font-size: clamp(14px, 1.28vw, 18px);
font-weight: 900;
line-height: 1.18;
white-space: pre-line;
box-shadow: 0 14px 24px rgba(82, 47, 26, 0.14);
animation: slipIn 300ms ease both;
}
.mom-onboarding {
display: grid;
gap: 9px;
border: 3px solid rgba(138, 90, 54, 0.28);
border-radius: 19px 12px 21px 13px;
background:
radial-gradient(circle at 20% 15%, rgba(255, 255, 255, 0.46), transparent 25%),
rgba(255, 248, 229, 0.62);
padding: 10px;
box-shadow: inset 0 1px rgba(255, 255, 255, 0.55);
}
.mom-prompt-chips {
display: flex;
flex-wrap: wrap;
gap: 7px;
}
.mom-desk .mom-prompt-chips button {
justify-self: auto;
border: 2px solid rgba(112, 69, 41, 0.75);
border-radius: 999px;
background: #fff7df;
color: #5f3c25;
padding: 7px 10px;
box-shadow: 0 8px 13px rgba(82, 47, 26, 0.12);
cursor: pointer;
font-size: 10px;
font-weight: 950;
letter-spacing: 0;
text-transform: none;
transition: transform 180ms ease, filter 180ms ease;
}
.mom-desk .mom-prompt-chips button:hover {
filter: brightness(1.05);
transform: translateY(-3px) rotate(-1deg);
}
.mom-prompt-chips span {
margin-right: 4px;
}
.house-reacts-note,
.mom-input-helper {
margin: 0;
color: #765338;
font-size: 10px;
font-weight: 850;
line-height: 1.35;
}
.house-reacts-note {
border-left: 4px solid #d59952;
padding-left: 8px;
}
.room-hint-row {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 6px;
}
.room-hint-row span {
display: grid;
gap: 1px;
border: 2px solid rgba(138, 90, 54, 0.2);
border-radius: 13px 8px 14px 9px;
background: rgba(255, 255, 255, 0.34);
color: #765338;
padding: 6px;
font-size: 9px;
font-weight: 850;
line-height: 1.15;
}
.room-hint-row b {
color: #563820;
font-family: Fraunces, Georgia, serif;
font-size: 11px;
font-weight: 900;
}
.speech-slip.you {
align-self: flex-end;
background: rgba(244, 180, 95, 0.92);
rotate: 1.4deg;
}
.speech-slip.mom {
align-self: flex-start;
rotate: -1deg;
}
.speech-slip.thinking::after {
content: "...";
animation: dots 1s steps(4) infinite;
}
.cursor {
display: inline-block;
width: 0.6em;
height: 1em;
margin-left: 4px;
border-right: 3px solid #67452e;
vertical-align: -0.15em;
animation: cursorBlink 800ms steps(2) infinite;
}
textarea {
min-height: 62px;
resize: none;
border: 3px solid #bc8c55;
border-radius: 18px 10px 20px 12px;
outline: none;
background: rgba(255, 250, 235, 0.94);
padding: 12px;
color: #4e3320;
box-shadow: inset 0 2px 7px rgba(96, 57, 31, 0.12);
}
.mom-desk button,
.note-desk button,
.backyard-note button {
justify-self: start;
padding: 9px 14px;
font-size: 12px;
}
.radio-object {
position: absolute;
right: clamp(22px, 6vw, 92px);
top: clamp(80px, 12vh, 126px);
display: grid;
width: min(310px, 28vw);
min-width: 230px;
grid-template-columns: 74px 1fr;
gap: 8px 15px;
align-items: center;
border: 5px solid rgba(91, 54, 31, 0.88);
border-radius: 30px 16px 28px 18px;
background: rgba(132, 84, 50, 0.78);
padding: 14px;
color: #fff2d1;
box-shadow: 0 0 42px rgba(255, 177, 72, 0.28), 0 30px 54px rgba(28, 15, 8, 0.3), inset 0 2px rgba(255, 255, 255, 0.26);
cursor: pointer;
backdrop-filter: blur(6px);
animation: radioGlow 3s ease-in-out infinite;
}
.radio-object span {
grid-row: 1 / 3;
font-size: 58px;
filter: drop-shadow(0 8px 10px rgba(38, 20, 10, 0.22));
}
.radio-object i {
display: flex;
align-items: center;
gap: 5px;
height: 38px;
}
.radio-object i::before,
.radio-object i::after {
content: "";
display: block;
width: 10px;
height: 28px;
border-radius: 999px;
background: #ffe0a0;
box-shadow: 18px 0 #ffe0a0, 36px 0 #ffe0a0, 54px 0 #ffe0a0;
animation: wave 1s ease-in-out infinite;
}
.radio-object i::after {
width: 26px;
height: 26px;
border: 4px solid #ffe0a0;
background: transparent;
box-shadow: none;
transform: rotate(var(--knob-turn, 0deg));
transition: transform 500ms cubic-bezier(0.19, 1, 0.22, 1);
}
.radio-object strong {
font-family: Fraunces, Georgia, serif;
font-size: 18px;
font-weight: 900;
line-height: 1.05;
animation: slipIn 320ms ease both;
}
.radio-console {
position: absolute;
z-index: 21;
right: clamp(22px, 6vw, 92px);
top: clamp(76px, 10vh, 112px);
display: grid;
width: min(330px, 28vw);
min-width: 270px;
gap: 10px;
border: 5px solid rgba(91, 54, 31, 0.88);
border-radius: 30px 16px 28px 18px;
background: rgba(132, 84, 50, 0.78);
padding: 14px;
color: #fff2d1;
box-shadow: 0 0 42px rgba(255, 177, 72, 0.28), 0 30px 54px rgba(28, 15, 8, 0.3), inset 0 2px rgba(255, 255, 255, 0.26);
backdrop-filter: blur(6px);
animation: radioGlow 3s ease-in-out infinite;
}
.radio-console header {
display: flex;
align-items: center;
gap: 12px;
}
.radio-console header span {
font-size: 46px;
}
.radio-console strong {
display: block;
font-family: Fraunces, Georgia, serif;
font-size: 23px;
font-weight: 900;
line-height: 1;
}
.radio-console small {
color: #ffe0a0;
font-weight: 850;
}
.radio-wave {
display: flex;
height: 38px;
align-items: center;
gap: 8px;
}
.radio-wave i {
display: block;
width: 9px;
height: 12px;
border-radius: 999px;
background: #ffe0a0;
opacity: 0.52;
}
.radio-wave.playing i {
animation: wave 1s ease-in-out infinite;
}
.radio-wave i:nth-child(2) { animation-delay: -0.18s; }
.radio-wave i:nth-child(3) { animation-delay: -0.34s; }
.radio-wave i:nth-child(4) { animation-delay: -0.52s; }
.radio-wave i:nth-child(5) { animation-delay: -0.7s; }
.radio-controls {
display: grid;
grid-template-columns: 80px 1fr;
gap: 10px;
align-items: center;
}
.radio-controls button,
.station-list button {
border: 3px solid rgba(255, 224, 160, 0.68);
border-radius: 999px;
background: rgba(255, 244, 216, 0.24);
color: #fff4d8;
padding: 8px 10px;
cursor: pointer;
font-size: 12px;
font-weight: 950;
}
.radio-controls input {
width: 100%;
accent-color: #f4b45f;
}
.radio-native-player {
width: 100%;
height: 34px;
border: 2px solid rgba(255, 224, 160, 0.44);
border-radius: 999px;
background: rgba(53, 35, 22, 0.48);
box-shadow: inset 0 2px 7px rgba(45, 23, 9, 0.42), 0 8px 18px rgba(45, 23, 9, 0.22);
filter: sepia(0.24) saturate(0.84);
}
.station-list {
display: flex;
flex-wrap: wrap;
gap: 6px;
}
.station-list button.active {
background: #ffe8ad;
color: #4e3320;
}
.table-object {
position: absolute;
right: clamp(30px, 6vw, 108px);
bottom: clamp(26px, 8vh, 86px);
width: min(300px, 27vw);
min-width: 230px;
border: 5px solid rgba(100, 61, 35, 0.86);
border-radius: 26px 15px 30px 17px;
background: rgba(255, 244, 216, 0.78);
padding: 18px;
box-shadow: 0 30px 54px rgba(28, 15, 8, 0.28), inset 0 2px rgba(255, 255, 255, 0.52);
backdrop-filter: blur(7px) saturate(125%);
animation: objectAppear 520ms cubic-bezier(0.19, 1, 0.22, 1);
}
.table-object span {
display: block;
font-size: clamp(58px, 6vw, 92px);
line-height: 0.9;
filter: drop-shadow(0 14px 12px rgba(68, 38, 18, 0.2));
animation: levitate 3.5s ease-in-out infinite;
}
.table-object h2,
.opened-letter h2 {
margin: 10px 0 7px;
color: #4e3320;
font-family: Fraunces, Georgia, serif;
font-size: clamp(24px, 2.4vw, 36px);
font-weight: 900;
line-height: 0.98;
}
.table-object p,
.opened-letter p {
margin: 0;
color: #68452d;
font-size: 14px;
font-weight: 800;
line-height: 1.45;
}
.cat-presence,
.garden-cat {
position: absolute;
z-index: 25;
border: 0;
background: transparent;
font-size: clamp(58px, 7vw, 96px);
cursor: pointer;
filter: drop-shadow(0 18px 13px rgba(43, 23, 11, 0.35));
transition: transform 230ms ease;
}
.cat-presence {
left: 56%;
bottom: 10%;
}
.garden-cat {
left: 18%;
bottom: 14%;
}
.cat-sleeping { animation: catSleep 3s ease-in-out infinite; }
.cat-walking { animation: catWalk 4.2s ease-in-out infinite; }
.cat-sitting { animation: levitate 4s ease-in-out infinite; }
.cat-looking,
.cat-presence:hover,
.garden-cat:hover {
transform: rotate(-8deg) translateY(-7px);
}
.cat-bubble,
.scene-note {
position: absolute;
z-index: 35;
margin: 0;
border: 4px solid #74492a;
border-radius: 999px;
background: rgba(255, 244, 216, 0.94);
padding: 11px 15px;
color: #68452d;
font-family: Fraunces, Georgia, serif;
font-size: 18px;
font-weight: 900;
box-shadow: 0 20px 34px rgba(31, 18, 10, 0.22);
animation: bubbleFloat 1.8s ease both;
}
.cat-bubble {
left: 58%;
bottom: 25%;
}
.cat-emoji {
display: block;
}
.cat-count {
position: absolute;
right: -2px;
top: 4px;
display: grid;
min-width: 28px;
height: 28px;
place-items: center;
border: 3px solid #704529;
border-radius: 999px;
background: #ffe8ad;
color: #563820;
font-size: 12px;
font-weight: 950;
box-shadow: 0 10px 16px rgba(43, 23, 11, 0.24);
}
.garden-bubble {
left: 18%;
bottom: 31%;
}
.hallway-door,
.backyard-door,
.kitchen-return {
position: absolute;
padding: 11px 17px;
font-size: 12px;
}
.hallway-door {
right: clamp(26px, 6vw, 98px);
top: 42%;
}
.backyard-door {
right: clamp(28px, 6vw, 92px);
bottom: 38px;
}
.kitchen-return {
left: clamp(28px, 5vw, 72px);
top: 86px;
}
.memory-backdrop {
position: absolute;
inset: 0;
z-index: 1;
background:
radial-gradient(circle at 22% 20%, rgba(255, 229, 163, 0.42), transparent 24%),
linear-gradient(180deg, #e4b574 0%, #c4864d 52%, #7f5532 100%);
}
.hall-ceiling {
position: absolute;
inset: 0 0 auto;
height: 20vh;
background: linear-gradient(135deg, #84452f, #c56d3a);
clip-path: polygon(0 0, 100% 0, 88% 100%, 8% 100%);
}
.hall-lamp {
position: absolute;
left: 50%;
top: 13vh;
width: 66px;
height: 66px;
translate: -50% 0;
border-radius: 50%;
background: #ffd987;
box-shadow: 0 0 48px rgba(255, 213, 128, 0.8), 0 0 160px rgba(255, 201, 96, 0.42);
}
.hall-window {
position: absolute;
right: 8vw;
top: 19vh;
width: 210px;
height: 190px;
border: 8px solid #704529;
border-radius: 32px 18px 36px 20px;
background: linear-gradient(180deg, #374f68, #182636);
box-shadow: inset 0 0 0 10px rgba(255, 240, 200, 0.1), 0 28px 46px rgba(39, 21, 10, 0.24);
}
.hallway-progress {
position: absolute;
left: 7vw;
top: 7vh;
z-index: 18;
width: min(620px, 54vw);
border: 6px solid rgba(112, 69, 41, 0.86);
border-radius: 30px 16px 34px 18px;
background: rgba(255, 244, 216, 0.82);
padding: 18px;
box-shadow: 0 28px 54px rgba(38, 21, 10, 0.28), inset 0 2px rgba(255, 255, 255, 0.52);
backdrop-filter: blur(8px) saturate(130%);
}
.hallway-progress p {
margin: 0 0 4px;
color: #8a5a36;
font-size: 11px;
font-weight: 950;
letter-spacing: 0.16em;
text-transform: uppercase;
}
.hallway-progress h2 {
margin: 0;
color: #4e3320;
font-family: Fraunces, Georgia, serif;
font-size: clamp(32px, 4vw, 54px);
font-weight: 900;
line-height: 0.95;
}
.visit-line {
display: block;
margin-top: 8px;
color: #8a6040;
font-size: 13px;
font-weight: 950;
}
.hallway-progress div {
display: flex;
flex-wrap: wrap;
gap: 8px;
margin-top: 14px;
}
.hallway-progress span {
border: 3px solid #8a5a36;
border-radius: 999px;
background: #fff7df;
padding: 7px 10px;
color: #65412a;
font-size: 12px;
font-weight: 950;
}
.hallway-progress strong {
font-family: Fraunces, Georgia, serif;
font-size: 20px;
}
.hall-board {
position: absolute;
left: 8vw;
top: 16vh;
width: min(58vw, 760px);
height: 62vh;
border: 10px solid #704529;
border-radius: 34px 17px 38px 20px;
background:
radial-gradient(circle at 30% 20%, rgba(255, 244, 216, 0.42), transparent 24%),
rgba(187, 123, 70, 0.72);
box-shadow: 0 38px 72px rgba(38, 21, 10, 0.3), inset 0 3px rgba(255, 255, 255, 0.36);
}
.floorboards {
position: absolute;
inset: auto 0 0;
height: 18vh;
background:
repeating-linear-gradient(90deg, rgba(65, 36, 19, 0.18) 0 4px, transparent 4px 13vw),
#8b5b36;
}
.memory-wall {
position: absolute;
left: 8vw;
top: 29vh;
width: min(58vw, 820px);
height: 54vh;
z-index: 12;
}
.journey-wall {
display: grid;
grid-template-columns: repeat(4, minmax(0, 1fr));
grid-template-rows: repeat(2, 160px);
gap: 16px;
align-content: center;
justify-content: center;
width: min(62vw, 860px);
height: 376px;
overflow: hidden;
border: 5px solid rgba(112, 69, 41, 0.42);
border-radius: 24px 14px 28px 16px;
background-color: rgba(180, 120, 60, 0.15);
background-image:
repeating-linear-gradient(0deg, transparent, transparent 28px, rgba(160, 100, 40, 0.06) 28px, rgba(160, 100, 40, 0.06) 29px),
repeating-linear-gradient(90deg, transparent, transparent 28px, rgba(160, 100, 40, 0.06) 28px, rgba(160, 100, 40, 0.06) 29px);
padding: 22px;
box-shadow: inset 0 3px 16px rgba(86, 48, 24, 0.12), 0 24px 44px rgba(38, 21, 10, 0.18);
}
.memory-artifact {
position: relative;
display: grid;
height: 160px;
min-width: 0;
max-width: none;
place-items: center;
gap: 6px;
overflow: hidden;
border: 2px solid rgba(140, 80, 30, 0.3);
border-radius: 12px;
background: #fff8e8;
color: #3a2010 !important;
padding: 16px;
box-shadow: 0 16px 22px rgba(82, 47, 26, 0.18);
cursor: pointer;
animation: objectAppear 420ms ease both;
transition: transform 220ms ease;
left: auto !important;
top: auto !important;
text-align: center;
}
.memory-artifact::before {
content: "";
position: absolute;
top: -12px;
width: 22px;
height: 22px;
border: 4px solid #704529;
border-radius: 50%;
background: #f4b45f;
box-shadow: 0 5px 0 rgba(77, 44, 23, 0.12);
}
.memory-artifact:hover {
transform: translateY(-8px) rotate(0deg) scale(1.03) !important;
}
.memory-artifact span {
color: #3a2010 !important;
font-size: 42px;
line-height: 1;
}
.memory-artifact strong {
color: #3a2010 !important;
font-family: Fraunces, Georgia, serif;
font-size: 18px;
line-height: 1.05;
}
.memory-artifact small {
color: #3a2010 !important;
opacity: 0.72;
font-size: 12px;
font-weight: 950;
}
.memory-artifact em {
display: block;
color: #3a2010 !important;
font-size: 13px;
font-style: normal;
font-weight: 800;
line-height: 1.25;
}
.memory-artifact:nth-child(3n) {
background: #fff8e8;
}
.memory-artifact:nth-child(3n + 1) {
background: #fff8e8;
}
.memory-artifact:nth-child(3n + 2) {
background: #fff8e8;
}
.memory-artifact-1 { left: 0; top: 4%; rotate: -7deg; }
.memory-artifact-2 { left: 23%; top: 10%; rotate: 4deg; }
.memory-artifact-3 { left: 48%; top: 2%; rotate: -3deg; }
.memory-artifact-4 { left: 68%; top: 24%; rotate: 6deg; }
.memory-artifact-5 { left: 8%; top: 46%; rotate: 8deg; }
.memory-artifact-6 { left: 34%; top: 48%; rotate: -5deg; }
.memory-artifact-7 { left: 58%; top: 52%; rotate: 3deg; }
.memory-artifact-8 { left: 76%; top: 4%; rotate: -6deg; }
.memory-detail em {
display: block;
margin-top: 12px;
color: #7c5738;
font-family: Fraunces, Georgia, serif;
font-size: 16px;
font-style: normal;
font-weight: 900;
line-height: 1.25;
}
.memory-detail,
.visitor-notes {
padding: 16px;
}
.memory-detail > * + *,
.visitor-notes > * + * {
border-top: 1px solid rgba(140, 80, 30, 0.2);
padding-top: 10px;
}
.memory-origin {
display: block;
margin-top: 10px;
border: 3px solid rgba(138, 90, 54, 0.38);
border-radius: 16px 8px 18px 10px;
background: rgba(255, 247, 223, 0.72);
color: #65412a;
padding: 8px;
font-size: 12px;
font-weight: 900;
line-height: 1.25;
}
.memory-actions {
display: flex;
flex-wrap: wrap;
gap: 8px;
margin-top: 14px;
}
.memory-actions button,
.tidy-hallway {
padding: 8px 11px;
font-size: 11px;
}
.museum-shelves {
position: absolute;
right: 7vw;
bottom: 38px;
z-index: 18;
display: grid;
width: min(360px, 32vw);
gap: 10px;
}
.tidy-hallway {
justify-self: start;
}
.museum-shelves div {
border: 5px solid rgba(100, 61, 35, 0.86);
border-bottom: 1px solid rgba(140, 80, 30, 0.2);
border-radius: 24px 14px 28px 16px;
background: rgba(255, 244, 216, 0.84);
padding: 16px;
box-shadow: 0 20px 38px rgba(28, 15, 8, 0.2), inset 0 2px rgba(255, 255, 255, 0.5);
backdrop-filter: blur(7px) saturate(125%);
}
.museum-shelves strong {
display: block;
color: #563820;
font-family: Fraunces, Georgia, serif;
font-size: 19px;
font-weight: 900;
}
.museum-shelves p {
margin: 5px 0 0;
color: #68452d;
font-size: 13px;
font-weight: 850;
line-height: 1.35;
}
.museum-pill-row {
display: flex;
flex-wrap: wrap;
gap: 7px;
align-items: center;
}
.museum-pill {
display: inline-flex;
align-items: center;
border-radius: 999px;
padding: 4px 10px;
font-size: 12px;
font-weight: 900;
line-height: 1.2;
}
.cat-pill {
background: #fff0d0;
color: #5a3010;
}
.garden-pill {
background: #f0f5e0;
color: #3a5010;
}
.visitor-notes p {
margin: 10px 0 0;
color: #68452d;
font-size: 13px;
font-weight: 850;
}
.note-strip {
display: flex;
flex-wrap: wrap;
gap: 6px;
}
.note-strip button {
border: 2px solid #8a5a36;
border-radius: 999px;
background: #fff7df;
color: #65412a;
padding: 6px 9px;
cursor: pointer;
font-size: 11px;
font-weight: 950;
}
.note-desk form {
display: grid;
gap: 8px;
}
.note-desk textarea {
min-height: 76px;
}
.paper-note,
.garden-note {
position: absolute;
display: grid;
place-items: center;
border: 4px solid #815430;
border-bottom-width: 17px;
background:
radial-gradient(circle at 30% 22%, rgba(255, 255, 255, 0.76), transparent 28%),
#fff4d8;
color: #6f4b31;
font-family: Fraunces, Georgia, serif;
font-weight: 900;
box-shadow: 0 16px 22px rgba(82, 47, 26, 0.18);
cursor: pointer;
animation: noteFloat 4.8s ease-in-out infinite;
transition: transform 220ms ease, box-shadow 220ms ease;
}
.paper-note {
width: 142px;
height: 118px;
font-size: 20px;
}
.paper-note small {
position: absolute;
bottom: -15px;
color: #815430;
font-family: Inter, sans-serif;
font-size: 9px;
font-weight: 900;
letter-spacing: 0.12em;
text-transform: uppercase;
}
.paper-note:hover,
.garden-note:hover {
transform: translateY(-10px) rotate(0deg) scale(1.04) !important;
}
.paper-1 { left: 0; top: 4%; rotate: -7deg; animation-delay: -0.3s; }
.paper-2 { left: 24%; top: 13%; rotate: 5deg; animation-delay: -1.1s; }
.paper-3 { left: 47%; top: 2%; rotate: -3deg; animation-delay: -1.8s; }
.paper-4 { left: 10%; top: 48%; rotate: 8deg; animation-delay: -2.5s; }
.paper-5 { left: 42%; top: 50%; rotate: -6deg; animation-delay: -3.2s; }
.paper-6 { left: 68%; top: 38%; rotate: 4deg; animation-delay: -3.8s; }
.opened-letter,
.note-desk,
.backyard-note {
position: absolute;
border: 5px solid rgba(100, 61, 35, 0.86);
border-radius: 26px 15px 30px 17px;
background: rgba(255, 244, 216, 0.82);
padding: 18px;
box-shadow: 0 30px 54px rgba(28, 15, 8, 0.28), inset 0 2px rgba(255, 255, 255, 0.52);
backdrop-filter: blur(7px) saturate(125%);
}
.reflection-bench {
position: absolute;
z-index: 20;
left: clamp(26px, 6vw, 90px);
bottom: clamp(28px, 6vh, 72px);
display: grid;
width: min(430px, 36vw);
min-width: 320px;
gap: 10px;
border: 6px solid #704529;
border-radius: 28px 16px 32px 18px;
background: rgba(255, 244, 216, 0.82);
padding: 18px;
box-shadow: 0 30px 54px rgba(28, 15, 8, 0.28), inset 0 2px rgba(255, 255, 255, 0.52);
backdrop-filter: blur(7px) saturate(125%);
}
.reflection-bench .bench-close {
position: absolute;
top: 12px;
right: 14px;
z-index: 3;
justify-self: auto;
border: 3px solid #704529;
border-radius: 999px;
background: #fff4d8;
color: #4e3320;
padding: 8px 13px;
box-shadow: 0 10px 18px rgba(35, 18, 8, 0.18);
cursor: pointer;
font-size: 12px;
font-weight: 950;
}
.reflection-bench .bench-close:hover,
.reflection-bench-tab:hover {
transform: translateY(-3px);
}
.reflection-bench-tab {
position: absolute;
z-index: 24;
left: clamp(26px, 6vw, 90px);
bottom: clamp(28px, 6vh, 72px);
border: 5px solid #704529;
border-radius: 999px;
background: linear-gradient(#fff1c9, #f5b760);
color: #4e3320;
padding: 12px 18px;
box-shadow: 0 18px 32px rgba(28, 15, 8, 0.28);
cursor: pointer;
font-size: 13px;
font-weight: 950;
}
.reflection-bench h2 {
margin: 0;
padding: 0 78px;
color: #4e3320;
font-family: Fraunces, Georgia, serif;
font-size: 34px;
font-weight: 900;
}
.reflection-bench p {
margin: 0;
color: #68452d;
font-size: 17px;
font-weight: 900;
}
.bench-garden-row {
display: flex;
flex-wrap: wrap;
gap: 7px;
align-items: center;
border: 3px solid rgba(112, 69, 41, 0.34);
border-radius: 18px 9px 20px 11px;
background: rgba(255, 247, 223, 0.55);
padding: 8px;
}
.bench-garden-row button {
display: grid;
min-width: 50px;
place-items: center;
border: 2px solid #8a5a36;
border-radius: 14px 8px 16px 9px;
background: #fff7df;
padding: 5px;
}
.bench-garden-row span {
font-size: 24px;
}
.bench-garden-row small {
color: #68452d;
font-size: 9px;
font-weight: 900;
}
.reflection-bench form {
display: grid;
gap: 9px;
}
.reflection-bench button {
justify-self: start;
border: 4px solid #6e4429;
border-radius: 999px;
background: linear-gradient(#ffe8ad, #f3ad56);
color: #4e3320;
padding: 9px 14px;
cursor: pointer;
font-size: 12px;
font-weight: 950;
}
.reflection-bench .bench-garden-row button {
justify-self: auto;
border: 2px solid #8a5a36;
border-radius: 14px 8px 16px 9px;
background: #fff7df;
color: #65412a;
padding: 5px;
}
.garden-growth {
position: absolute;
inset: 12vh 6vw 18vh 42vw;
pointer-events: none;
}
.plant {
position: absolute;
z-index: 18;
display: grid;
place-items: center;
border: 0;
background: transparent;
color: #fff4d8;
cursor: pointer;
filter: drop-shadow(0 16px 10px rgba(28, 15, 8, 0.28));
pointer-events: auto;
animation: objectAppear 480ms ease both, levitate 4.2s ease-in-out infinite;
}
.plant span {
font-size: clamp(44px, 5vw, 78px);
}
.plant small {
border: 3px solid #704529;
border-radius: 999px;
background: rgba(255, 244, 216, 0.86);
color: #563820;
padding: 5px 8px;
font-size: 10px;
font-weight: 950;
}
.plant-1 { left: 4%; bottom: 4%; }
.plant-2 { left: 22%; bottom: 18%; animation-delay: -0.5s; }
.plant-3 { left: 44%; bottom: 8%; animation-delay: -1s; }
.plant-4 { left: 66%; bottom: 24%; animation-delay: -1.5s; }
.plant-5 { left: 18%; bottom: 42%; animation-delay: -2s; }
.plant-6 { left: 52%; bottom: 48%; animation-delay: -2.5s; }
.plant-7 { left: 76%; bottom: 4%; animation-delay: -3s; }
.plant-8 { left: 34%; bottom: 62%; animation-delay: -3.5s; }
.plant-9 { left: 86%; bottom: 44%; animation-delay: -4s; }
.plant-10 { left: 4%; bottom: 70%; animation-delay: -4.5s; }
.garden-progress {
right: clamp(24px, 5vw, 84px);
top: clamp(74px, 12vh, 118px);
display: grid;
width: min(270px, 26vw);
gap: 7px;
}
.garden-progress span {
color: #68452d;
font-weight: 900;
}
.opened-letter {
right: 7vw;
top: 24vh;
width: min(340px, 31vw);
min-height: 180px;
}
.note-desk {
right: 7vw;
bottom: 74px;
display: grid;
width: min(340px, 31vw);
gap: 9px;
}
.garden-notes {
position: absolute;
right: 7vw;
top: 18vh;
width: 330px;
height: 260px;
}
.garden-note {
width: 118px;
height: 92px;
border-bottom-width: 14px;
font-size: 16px;
}
.garden-note-1 { left: 0; top: 0; rotate: -6deg; }
.garden-note-2 { right: 20px; top: 18px; rotate: 7deg; }
.garden-note-3 { left: 76px; top: 108px; rotate: -2deg; }
.study-backdrop {
position: absolute;
inset: 0;
z-index: 1;
overflow: hidden;
background:
radial-gradient(circle at 28% 18%, rgba(255, 235, 180, 0.28), transparent 20%),
linear-gradient(180deg, #9d704b 0%, #7c5234 52%, #3b2519 100%);
}
.study-wall {
position: absolute;
inset: 9vh 8vw 18vh;
border: 8px solid rgba(88, 51, 29, 0.88);
border-radius: 36px 18px 42px 22px;
background:
repeating-linear-gradient(90deg, rgba(88, 51, 29, 0.08) 0 6px, transparent 6px 72px),
linear-gradient(135deg, rgba(255, 240, 203, 0.72), rgba(199, 145, 92, 0.72));
box-shadow: inset 0 4px rgba(255, 250, 224, 0.38), 0 36px 80px rgba(35, 20, 12, 0.36);
}
.study-window {
position: absolute;
right: 12vw;
top: 13vh;
width: 170px;
height: 150px;
border: 8px solid #704529;
border-radius: 26px 14px 30px 16px;
background:
linear-gradient(90deg, transparent 47%, rgba(255, 244, 216, 0.35) 48% 52%, transparent 53%),
linear-gradient(180deg, transparent 47%, rgba(255, 244, 216, 0.35) 48% 52%, transparent 53%),
radial-gradient(circle at 70% 20%, #ffe8ad 0 10%, transparent 12%),
linear-gradient(180deg, #33445d, #1b2634);
box-shadow: 0 22px 46px rgba(38, 21, 10, 0.24), inset 0 0 28px rgba(255, 224, 160, 0.16);
}
.study-shelf {
position: absolute;
left: 12vw;
width: min(430px, 38vw);
height: 18px;
border: 4px solid #5e371f;
border-radius: 999px;
background: linear-gradient(#9c6338, #6f4227);
box-shadow: 0 18px 28px rgba(42, 23, 13, 0.24);
}
.shelf-one { top: 24vh; }
.shelf-two { top: 39vh; left: 16vw; }
.study-floor {
position: absolute;
inset: auto 0 0;
height: 22vh;
background:
repeating-linear-gradient(90deg, rgba(65, 36, 19, 0.24) 0 4px, transparent 4px 10vw),
linear-gradient(180deg, #7b4c2e, #4a2c1d);
}
.study-rug {
position: absolute;
left: 44%;
bottom: 8vh;
width: min(460px, 42vw);
height: 108px;
transform: translateX(-50%) rotateX(58deg) rotateZ(-2deg);
border: 7px solid rgba(92, 54, 31, 0.78);
border-radius: 50%;
background:
repeating-radial-gradient(ellipse at center, rgba(255, 232, 173, 0.34) 0 8px, transparent 8px 19px),
#b56545;
box-shadow: 0 28px 38px rgba(32, 17, 9, 0.28);
}
.study-library {
position: absolute;
z-index: 16;
left: clamp(26px, 6vw, 92px);
top: clamp(82px, 13vh, 128px);
width: min(720px, 58vw);
min-height: 560px;
border: 7px solid rgba(90, 53, 30, 0.86);
border-radius: 34px 17px 38px 20px;
background:
radial-gradient(circle at 78% 16%, rgba(255, 232, 173, 0.42), transparent 19%),
rgba(255, 244, 216, 0.72);
padding: 24px;
box-shadow: 0 36px 76px rgba(35, 19, 9, 0.34), inset 0 3px rgba(255, 255, 255, 0.5);
backdrop-filter: blur(8px) saturate(128%);
}
.study-library header p {
margin: 0 0 4px;
color: #8a5a36;
font-size: 12px;
font-weight: 950;
letter-spacing: 0.15em;
text-transform: uppercase;
}
.study-library h2 {
margin: 0;
color: #4e3320;
font-family: Fraunces, Georgia, serif;
font-size: clamp(38px, 5vw, 70px);
font-weight: 900;
line-height: 0.9;
}
.study-library header span {
display: block;
margin-top: 8px;
color: #68452d;
font-weight: 850;
}
.library-lamp {
position: absolute;
right: 58px;
top: 36px;
width: 76px;
height: 76px;
border-radius: 50%;
background: #ffd987;
box-shadow: 0 0 38px rgba(255, 213, 128, 0.9), 0 0 118px rgba(255, 201, 96, 0.5);
animation: candleFlicker 2.8s ease-in-out infinite;
}
.bookcase {
position: relative;
display: flex;
align-items: end;
gap: 7px;
height: 150px;
margin-top: 28px;
border: 8px solid #704529;
border-radius: 24px 12px 28px 14px;
background:
linear-gradient(180deg, transparent 0 45%, rgba(93, 55, 31, 0.28) 46% 53%, transparent 54%),
rgba(128, 78, 44, 0.34);
padding: 18px 16px;
box-shadow: inset 0 3px rgba(255, 235, 190, 0.28), 0 18px 30px rgba(45, 24, 13, 0.2);
}
.book-spine {
width: 42px;
height: var(--book-height, 96px);
border: 3px solid rgba(73, 43, 25, 0.65);
border-radius: 8px 5px 9px 4px;
writing-mode: vertical-rl;
text-orientation: mixed;
background: var(--book-color, #b56545);
color: #fff7df;
padding: 7px 4px;
cursor: pointer;
font-size: 11px;
font-weight: 950;
box-shadow: 0 10px 14px rgba(46, 24, 13, 0.22), inset 2px 0 rgba(255, 255, 255, 0.18);
transition: transform 180ms ease;
}
.book-spine:hover {
transform: translateY(-9px) rotate(-2deg);
}
.book-1 { --book-height: 104px; --book-color: #b56545; }
.book-2 { --book-height: 118px; --book-color: #6c8a55; }
.book-3 { --book-height: 92px; --book-color: #d69b4f; }
.book-4 { --book-height: 126px; --book-color: #7c6c9e; }
.book-5 { --book-height: 108px; --book-color: #9b5c3d; }
.book-6 { --book-height: 116px; --book-color: #557b80; }
.study-desk {
position: relative;
height: 230px;
margin-top: 34px;
border: 7px solid #704529;
border-radius: 42% 44% 24px 25px;
background:
repeating-linear-gradient(7deg, rgba(255, 222, 162, 0.12) 0 8px, transparent 8px 18px),
linear-gradient(135deg, #9f6438, #6b3e25);
box-shadow: 0 32px 0 rgba(63, 34, 17, 0.2), 0 44px 60px rgba(29, 15, 8, 0.3), inset 0 8px rgba(255, 224, 160, 0.18);
transform: rotateX(5deg);
}
.laptop {
position: absolute;
left: 36px;
top: 30px;
width: 250px;
filter: drop-shadow(0 20px 18px rgba(35, 18, 9, 0.28));
}
.laptop-screen {
min-height: 128px;
border: 7px solid #4b3326;
border-radius: 18px 12px 16px 10px;
background:
linear-gradient(135deg, rgba(255, 232, 173, 0.2), transparent 40%),
#27343b;
padding: 16px;
color: #fff4d8;
}
.laptop-screen span {
display: block;
margin-bottom: 12px;
color: #ffc66d;
font-size: 11px;
font-weight: 950;
letter-spacing: 0.14em;
text-transform: uppercase;
}
.laptop-screen p {
margin: 0;
font-family: Fraunces, Georgia, serif;
font-size: 20px;
font-weight: 900;
line-height: 1.05;
}
.laptop-base {
height: 24px;
margin: 0 18px;
border-radius: 0 0 18px 18px;
background: #c9b28c;
box-shadow: inset 0 4px rgba(255, 255, 255, 0.26);
}
.paper-page {
position: absolute;
display: grid;
width: 148px;
min-height: 116px;
gap: 6px;
border: 4px solid #704529;
border-radius: 18px 9px 20px 11px;
background:
repeating-linear-gradient(180deg, transparent 0 20px, rgba(120, 80, 45, 0.12) 20px 22px),
#fff4d8;
color: #60412b;
padding: 14px;
cursor: pointer;
box-shadow: 0 18px 20px rgba(45, 24, 13, 0.22);
transition: transform 180ms ease;
}
.paper-page:hover {
transform: translateY(-8px) rotate(0deg) !important;
}
.paper-page strong {
font-family: Fraunces, Georgia, serif;
font-size: 18px;
line-height: 1;
}
.paper-page span {
font-size: 12px;
font-weight: 850;
}
.page-one { right: 190px; top: 38px; rotate: -7deg; }
.page-two { right: 58px; top: 78px; rotate: 5deg; }
.page-three { right: 122px; bottom: 20px; rotate: -2deg; }
.study-side {
position: absolute;
z-index: 18;
right: clamp(28px, 7vw, 96px);
top: clamp(120px, 18vh, 170px);
display: grid;
width: min(340px, 29vw);
gap: 12px;
border: 6px solid rgba(90, 53, 30, 0.86);
border-radius: 28px 14px 32px 16px;
background: rgba(255, 244, 216, 0.78);
padding: 18px;
box-shadow: 0 30px 58px rgba(35, 19, 9, 0.3), inset 0 2px rgba(255, 255, 255, 0.52);
backdrop-filter: blur(7px) saturate(126%);
}
.study-side strong {
color: #4e3320;
font-family: Fraunces, Georgia, serif;
font-size: 28px;
line-height: 1;
}
.study-side p {
margin: 0;
color: #68452d;
font-weight: 850;
line-height: 1.35;
}
.study-artifacts {
display: grid;
gap: 8px;
}
.study-artifacts button {
display: flex;
align-items: center;
gap: 9px;
border: 3px solid #8a5a36;
border-radius: 16px 9px 18px 10px;
background: #fff7df;
color: #65412a;
padding: 9px;
cursor: pointer;
font-size: 12px;
font-weight: 950;
text-align: left;
}
.study-artifacts span {
font-size: 22px;
}
.study-artifacts em {
color: #68452d;
font-size: 13px;
font-style: normal;
font-weight: 850;
}
.study-return {
right: clamp(28px, 7vw, 96px);
bottom: clamp(30px, 7vh, 74px);
}
.attic-scene,
.greenhouse-scene {
background:
radial-gradient(circle at 42% 28%, rgba(255, 232, 173, 0.2), transparent 30%),
linear-gradient(180deg, rgba(107, 74, 46, 0.86), rgba(50, 31, 21, 0.94));
}
.greenhouse-scene {
background:
radial-gradient(circle at 62% 28%, rgba(226, 244, 196, 0.34), transparent 28%),
linear-gradient(180deg, rgba(91, 126, 82, 0.86), rgba(38, 65, 43, 0.94));
}
.locked-room-panel {
position: absolute;
left: 50%;
top: 52%;
z-index: 18;
display: grid;
width: min(680px, 78vw);
gap: 14px;
translate: -50% -50%;
border: 7px solid rgba(90, 53, 30, 0.86);
border-radius: 34px 17px 38px 20px;
background:
radial-gradient(circle at 78% 16%, rgba(255, 232, 173, 0.36), transparent 19%),
rgba(255, 244, 216, 0.82);
padding: 24px;
box-shadow: 0 36px 76px rgba(35, 19, 9, 0.34), inset 0 3px rgba(255, 255, 255, 0.5);
backdrop-filter: blur(8px) saturate(128%);
}
.greenhouse-panel {
border-color: rgba(68, 94, 57, 0.88);
background:
radial-gradient(circle at 78% 16%, rgba(226, 244, 196, 0.42), transparent 19%),
rgba(244, 255, 221, 0.82);
}
.locked-room-panel p {
margin: 0;
color: #8a5a36;
font-size: 12px;
font-weight: 950;
letter-spacing: 0.16em;
text-transform: uppercase;
}
.locked-room-panel h2 {
margin: 0;
color: #4e3320;
font-family: Fraunces, Georgia, serif;
font-size: clamp(34px, 5vw, 64px);
line-height: 0.94;
}
.locked-room-panel span,
.locked-room-panel em {
color: #68452d;
font-size: 16px;
font-style: normal;
font-weight: 850;
line-height: 1.4;
}
.room-evidence {
display: flex;
flex-wrap: wrap;
gap: 9px;
align-items: center;
border: 4px solid rgba(112, 69, 41, 0.5);
border-radius: 22px 12px 24px 14px;
background: rgba(255, 247, 223, 0.74);
padding: 12px;
}
.attic-trunk,
.greenhouse-stats {
display: grid;
gap: 8px;
border: 4px solid rgba(112, 69, 41, 0.62);
border-radius: 24px 12px 28px 14px;
background:
radial-gradient(circle at 20% 10%, rgba(255, 232, 173, 0.44), transparent 32%),
rgba(116, 72, 42, 0.18);
padding: 13px;
}
.attic-trunk.open {
background:
radial-gradient(circle at 30% 16%, rgba(255, 218, 132, 0.5), transparent 34%),
rgba(255, 247, 223, 0.58);
}
.attic-trunk strong {
color: #4e3320;
font-family: Fraunces, Georgia, serif;
font-size: 22px;
}
.attic-trunk p {
margin: 0;
color: #68452d;
font-size: 13px;
font-weight: 850;
letter-spacing: 0;
text-transform: none;
}
.attic-trunk button {
justify-self: start;
border: 3px solid #8a5a36;
border-radius: 999px;
background: #fff7df;
color: #65412a;
padding: 8px 11px;
cursor: pointer;
font-size: 12px;
font-weight: 950;
}
.greenhouse-stats {
grid-template-columns: repeat(3, minmax(0, 1fr));
}
.greenhouse-stats span {
border: 3px solid rgba(68, 94, 57, 0.42);
border-radius: 16px 8px 18px 10px;
background: rgba(255, 247, 223, 0.7);
padding: 8px;
color: #36512f;
font-size: 12px;
font-weight: 950;
}
.room-evidence strong {
width: 100%;
color: #563820;
font-family: Fraunces, Georgia, serif;
font-size: 20px;
}
.room-evidence button,
.locked-room-panel > button {
border: 3px solid #8a5a36;
border-radius: 999px;
background: #fff7df;
color: #65412a;
padding: 9px 12px;
cursor: pointer;
font-size: 12px;
font-weight: 950;
}
.room-evidence button span {
margin-right: 6px;
}
.locked-room-panel > button {
justify-self: start;
border-width: 4px;
background: linear-gradient(#ffe8ad, #f3ad56);
}
.garden-note-4 { right: 0; top: 142px; rotate: 5deg; }
.garden-note-5 { left: 8px; top: 168px; rotate: 4deg; }
.backyard-note {
right: 7vw;
bottom: 44px;
display: grid;
width: min(360px, 34vw);
gap: 9px;
}
.scene-note {
left: 50%;
bottom: 30px;
z-index: 60;
translate: -50% 0;
font-size: 13px;
animation: sceneToast 900ms ease both;
}
@keyframes rainFall {
from { transform: translate3d(0, -18vh, 0) rotate(10deg); }
to { transform: translate3d(0, 120vh, 0) rotate(10deg); }
}
@keyframes firefly {
0%, 100% { opacity: 0.2; transform: translate3d(0, 0, 0) scale(0.82); }
34% { opacity: 1; }
60% { transform: translate3d(18px, -26px, 0) scale(1.08); }
}
@keyframes warmTravel {
0% { opacity: 0; transform: scale(0.56); }
45% { opacity: 1; transform: scale(1.15); }
100% { opacity: 0; transform: scale(2.2); }
}
@keyframes sceneArrive {
from { opacity: 0; transform: translateY(18px) scale(0.98); }
to { opacity: 1; transform: translateY(0) scale(1); }
}
@keyframes doorPulse {
0%, 100% { transform: scale(1); opacity: 0.4; }
50% { transform: scale(1.06); opacity: 0.88; }
}
@keyframes radioGlow {
0%, 100% { box-shadow: 0 0 32px rgba(255, 177, 72, 0.22), 0 30px 54px rgba(28, 15, 8, 0.3), inset 0 2px rgba(255, 255, 255, 0.26); }
50% { box-shadow: 0 0 70px rgba(255, 177, 72, 0.42), 0 30px 54px rgba(28, 15, 8, 0.3), inset 0 2px rgba(255, 255, 255, 0.26); }
}
@keyframes wave {
0%, 100% { transform: scaleY(0.55); opacity: 0.54; }
50% { transform: scaleY(1.12); opacity: 1; }
}
@keyframes slipIn {
from { opacity: 0; transform: translateY(10px); }
to { opacity: 1; transform: translateY(0); }
}
@keyframes dots {
0%, 20% { content: ""; }
40% { content: "."; }
60% { content: ".."; }
80%, 100% { content: "..."; }
}
@keyframes cursorBlink {
0%, 50% { opacity: 1; }
51%, 100% { opacity: 0; }
}
@keyframes objectAppear {
from { opacity: 0; transform: translateY(24px) scale(0.86); }
to { opacity: 1; transform: translateY(0) scale(1); }
}
@keyframes levitate {
0%, 100% { transform: translateY(0) rotate(-1deg); }
50% { transform: translateY(-7px) rotate(1deg); }
}
@keyframes catSleep {
0%, 100% { transform: scale(1) rotate(-2deg); }
50% { transform: scale(1.02) rotate(1deg); }
}
@keyframes catWalk {
0%, 100% { transform: translateX(-38px) rotate(-1deg); }
50% { transform: translateX(62px) rotate(1deg); }
}
@keyframes bubbleFloat {
0% { opacity: 0; transform: translateY(10px) scale(0.94); }
30% { opacity: 1; }
100% { opacity: 0; transform: translateY(-18px) scale(1); }
}
@keyframes noteFloat {
0%, 100% { translate: 0 0; }
50% { translate: 0 -6px; }
}
@keyframes sceneToast {
0% { opacity: 0; transform: translateY(14px) scale(0.94); }
30%, 80% { opacity: 1; transform: translateY(0) scale(1); }
100% { opacity: 0; transform: translateY(-10px) scale(1); }
}
@media (max-width: 820px) {
.room-nav {
top: auto;
bottom: 12px;
width: calc(100vw - 20px);
justify-content: center;
overflow-x: auto;
}
.room-nav button {
padding: 9px 11px;
white-space: nowrap;
}
.mom-desk,
.table-object,
.radio-object,
.opened-letter,
.note-desk,
.backyard-note {
left: 16px;
right: auto;
width: calc(100vw - 32px);
min-width: 0;
}
.mom-desk {
bottom: 76px;
}
.table-object {
top: 78px;
bottom: auto;
}
.radio-object {
top: 220px;
}
.hallway-door,
.backyard-door,
.kitchen-return {
right: 16px;
left: auto;
bottom: 72px;
top: auto;
}
.memory-wall {
left: 7vw;
top: 12vh;
width: 86vw;
height: 45vh;
}
.paper-note {
width: 114px;
height: 94px;
font-size: 16px;
}
.opened-letter {
top: auto;
bottom: 276px;
}
.note-desk,
.backyard-note {
bottom: 76px;
}
.garden-notes {
left: 16px;
right: auto;
top: 96px;
width: calc(100vw - 32px);
}
.garden-cat,
.cat-presence {
left: 42%;
bottom: 28%;
}
}
}
.memory-artifact strong,
.memory-artifact small,
.memory-artifact em {
max-width: 100%;
overflow: hidden;
text-overflow: ellipsis;
}
.memory-artifact strong {
white-space: nowrap;
}
.memory-artifact em {
display: -webkit-box;
-webkit-line-clamp: 3;
-webkit-box-orient: vertical;
}
.reflection-bench {
left: 50% !important;
top: 50% !important;
bottom: auto !important;
translate: -50% -50%;
width: min(620px, 86vw) !important;
min-width: 0 !important;
text-align: center;
}
.reflection-question {
border: 4px solid #704529;
border-radius: 20px 12px 24px 14px;
background: linear-gradient(135deg, #8b5b36, #5f351d);
color: #fff3d1 !important;
padding: 18px;
font-family: Fraunces, Georgia, serif;
font-size: clamp(22px, 3vw, 36px) !important;
line-height: 1.05;
box-shadow: inset 0 2px rgba(255,255,255,0.2), 0 18px 32px rgba(31,18,10,0.25);
}
.bench-garden-row {
justify-content: center;
}
.garden-growth {
left: 50% !important;
right: auto !important;
bottom: 6vh !important;
top: auto !important;
display: flex !important;
width: min(560px, 82vw);
min-height: 90px;
translate: -50% 0;
justify-content: center;
gap: 16px;
pointer-events: auto;
}
.plant {
position: static !important;
animation: objectAppear 480ms ease both, levitate 4.2s ease-in-out infinite;
}
.plant small {
display: none;
}
.garden-bubble {
display: none !important;
}
@media (max-width: 700px) {
.journey-wall {
grid-template-columns: repeat(2, minmax(0, 1fr));
grid-template-rows: repeat(4, 150px);
height: 690px;
overflow: hidden;
}
.memory-artifact {
height: 150px;
padding: 12px;
}
}
/* Hallway museum redesign */
.scene-memory .memory-backdrop {
background:
radial-gradient(circle at 58% 18%, rgba(255, 218, 132, 0.48), transparent 16%),
radial-gradient(circle at 18% 38%, rgba(255, 239, 192, 0.22), transparent 22%),
linear-gradient(180deg, #d19a61 0%, #a66b3d 48%, #6c4227 100%);
}
.scene-memory .memory-backdrop::before,
.scene-memory .memory-backdrop::after {
content: "";
position: absolute;
inset: 0;
z-index: 4;
pointer-events: none;
background-image:
radial-gradient(circle, rgba(255, 237, 176, 0.56) 0 2px, transparent 3px),
radial-gradient(circle, rgba(255, 246, 220, 0.32) 0 1px, transparent 2px);
background-size: 210px 180px, 130px 150px;
animation: dustDrift 16s linear infinite;
}
.scene-memory .memory-backdrop::after {
opacity: 0.55;
animation-duration: 24s;
transform: translate3d(calc(var(--px) * 0.12), calc(var(--py) * 0.08), 0);
}
.scene-memory .hall-lamp {
left: 56%;
top: 10vh;
width: 84px;
height: 84px;
box-shadow:
0 0 46px rgba(255, 220, 139, 0.92),
0 0 190px rgba(255, 190, 82, 0.56),
0 0 360px rgba(255, 173, 63, 0.24);
animation: lampBreathe 4s ease-in-out infinite;
}
.scene-memory .hall-board {
left: 5vw;
top: 17vh;
width: min(64vw, 1060px);
height: 72vh;
border-width: 8px;
background:
linear-gradient(rgba(122, 72, 35, 0.08), rgba(122, 72, 35, 0.08)),
repeating-linear-gradient(90deg, rgba(93, 54, 27, 0.1) 0 2px, transparent 2px 140px),
rgba(196, 129, 70, 0.46);
}
.scene-memory .hall-window {
right: 7vw;
top: 16vh;
opacity: 0.48;
transform: translate3d(calc(var(--px) * -0.1), calc(var(--py) * -0.04), 0);
}
.hallway-progress {
left: 5vw !important;
top: 82px !important;
z-index: 22;
width: min(62vw, 980px) !important;
border: 0 !important;
border-radius: 0 !important;
background: transparent !important;
padding: 0 !important;
box-shadow: none !important;
backdrop-filter: none !important;
}
.hallway-progress p {
margin: 0;
color: #4e2f1b;
font-size: 14px;
font-weight: 950;
letter-spacing: 0.18em;
text-shadow: 0 2px rgba(255, 238, 198, 0.18);
}
.hallway-progress h2 {
display: none;
}
.hallway-progress div {
display: flex;
flex-wrap: wrap;
gap: 10px;
margin-top: 8px;
}
.hallway-progress span {
border: 2px solid rgba(99, 55, 25, 0.42);
border-radius: 999px;
background: rgba(255, 246, 220, 0.76);
padding: 6px 10px;
color: #4b2a14;
font-size: 12px;
box-shadow: 0 10px 18px rgba(57, 31, 14, 0.13);
}
.hallway-progress strong {
font-size: 16px;
}
.visit-line {
color: #694225;
font-size: 12px;
font-weight: 850;
}
.memory-wall {
left: 5vw !important;
top: 18vh !important;
z-index: 18;
width: min(64vw, 1060px) !important;
height: 70vh !important;
}
.journey-wall {
display: block !important;
column-count: 3;
column-gap: 18px;
overflow-y: auto !important;
border: 0 !important;
border-radius: 0 !important;
background: transparent !important;
background-image: none !important;
padding: 18px 20px 26px !important;
box-shadow: none !important;
scrollbar-width: thin;
}
.memory-artifact {
position: relative !important;
display: inline-grid !important;
width: 100% !important;
height: auto !important;
min-height: 172px;
break-inside: avoid;
margin: 0 0 18px;
align-items: start;
justify-items: start;
gap: 8px;
border: 2px solid rgba(112, 64, 30, 0.28);
border-radius: 16px 10px 18px 12px;
background:
linear-gradient(145deg, rgba(255,255,255,0.55), transparent 30%),
#fff8e8;
color: #3a2010 !important;
padding: 18px 16px 16px;
box-shadow:
0 18px 26px rgba(65, 35, 15, 0.18),
inset 0 1px rgba(255,255,255,0.66);
text-align: left;
transform: rotate(var(--tilt, -1deg));
animation: memoryFloat 6s ease-in-out infinite;
}
.memory-artifact:nth-child(2n) { --tilt: 1.2deg; min-height: 202px; }
.memory-artifact:nth-child(3n) { --tilt: -1.8deg; min-height: 188px; }
.memory-artifact:nth-child(4n) { --tilt: 0.6deg; min-height: 220px; }
.memory-artifact:hover {
z-index: 4;
transform: translateY(-8px) rotate(0deg) scale(1.02) !important;
box-shadow: 0 26px 36px rgba(57, 31, 14, 0.25);
}
.memory-artifact span {
width: 46px;
height: 46px;
display: grid;
place-items: center;
border-radius: 14px 9px 16px 10px;
background: #fff0d0;
font-size: 30px;
line-height: 1;
}
.memory-artifact strong {
font-size: 22px;
line-height: 1.02;
}
.memory-artifact small {
color: #8a6040 !important;
font-size: 12px;
opacity: 1;
}
.memory-artifact em {
display: -webkit-box;
-webkit-line-clamp: 4;
-webkit-box-orient: vertical;
color: #5e3921 !important;
font-size: 14px;
line-height: 1.32;
overflow: hidden;
}
.hallway-side-rail {
position: absolute;
right: 5vw;
top: 16vh;
z-index: 24;
display: grid;
width: min(330px, 25vw);
max-height: 72vh;
gap: 12px;
overflow-y: auto;
}
.hallway-side-rail details {
border: 3px solid rgba(99, 55, 25, 0.48);
border-radius: 20px 12px 22px 14px;
background: rgba(255, 246, 220, 0.9);
padding: 12px;
box-shadow: 0 18px 28px rgba(57, 31, 14, 0.16);
}
.hallway-side-rail summary {
cursor: pointer;
color: #4b2a14;
font-family: Fraunces, Georgia, serif;
font-size: 20px;
font-weight: 900;
}
.hallway-side-rail p {
color: #5e3921;
font-size: 13px;
font-weight: 800;
line-height: 1.35;
}
.hallway-side-rail form {
display: grid;
gap: 8px;
margin-top: 10px;
}
.hallway-side-rail textarea {
min-height: 70px;
}
.museum-pill-row {
display: flex;
flex-wrap: wrap;
gap: 8px;
margin-top: 10px;
}
.museum-pill {
border: 0;
cursor: pointer;
transition: transform 180ms ease, filter 180ms ease;
}
.museum-pill:hover {
transform: translateY(-3px);
filter: brightness(1.04);
}
.garden-pill {
background: #eef5d6;
color: #31490f;
}
.tidy-hallway {
justify-self: start;
}
.backyard-door {
right: 5vw;
bottom: 26px;
z-index: 25;
}
.memory-modal {
position: fixed;
inset: 0;
z-index: 80;
display: grid;
place-items: center;
background: rgba(55, 30, 14, 0.42);
backdrop-filter: blur(4px);
animation: objectAppear 220ms ease both;
}
.memory-modal .opened-letter {
position: relative;
right: auto;
top: auto;
width: min(520px, 90vw);
max-height: 82vh;
overflow-y: auto;
background: #fff7df;
}
.memory-modal-icon {
display: grid;
width: 62px;
height: 62px;
place-items: center;
border-radius: 18px 11px 20px 12px;
background: #fff0d0;
font-size: 38px;
}
.memory-modal-kicker {
margin-top: 12px !important;
color: #8a6040 !important;
font-size: 12px !important;
letter-spacing: 0.14em;
text-transform: uppercase;
}
@keyframes memoryFloat {
0%, 100% { translate: 0 0; }
50% { translate: 0 -4px; }
}
@keyframes dustDrift {
from { background-position: 0 0, 0 0; }
to { background-position: 210px 180px, -130px 150px; }
}
@keyframes lampBreathe {
0%, 100% { opacity: 0.78; scale: 1; }
50% { opacity: 1; scale: 1.06; }
}
@media (max-width: 980px) {
.memory-wall {
width: 90vw !important;
height: 48vh !important;
top: 18vh !important;
}
.journey-wall {
column-count: 2;
}
.hallway-side-rail {
left: 5vw;
right: auto;
top: 68vh;
width: 90vw;
max-height: 24vh;
grid-template-columns: repeat(3, minmax(0, 1fr));
}
}