Remove obsolete generated assets and dead code
All checks were successful
Build Org Website / build (push) Successful in 43s

This commit is contained in:
gitea-actions
2026-08-19 10:53:30 +01:00
parent 2ee6575539
commit d12edea8de
269 changed files with 58 additions and 85836 deletions

View File

@@ -1,601 +0,0 @@
.house-root {
--house-ink: #34271e;
--house-wood: #744a2d;
--house-wood-dark: #4a2e20;
--house-plaster: #eadcbf;
--house-lamp: #e7b85a;
--house-green: #607451;
--house-blue: #617789;
--house-rug: #914d3f;
--house-shadow: rgba(43, 29, 18, 0.18);
max-width: 1180px;
}
.house-heading {
max-width: 760px;
}
.house-visually-hidden {
position: absolute;
width: 1px;
height: 1px;
padding: 0;
margin: -1px;
overflow: hidden;
clip: rect(0, 0, 0, 0);
white-space: nowrap;
border: 0;
}
.house-statusbar {
display: flex;
align-items: center;
justify-content: space-between;
gap: 1rem;
margin: 1rem 0;
padding: 0.75rem 1rem;
border: 1px solid color-mix(in oklab, var(--border) 72%, var(--house-wood));
border-radius: 8px;
background: color-mix(in oklab, var(--surface) 92%, var(--house-lamp) 8%);
box-shadow: 0 8px 24px var(--house-shadow);
}
.house-statusbar p {
margin: 0;
color: var(--muted);
font-size: 0.92rem;
}
.house-statusbar button {
flex: 0 0 auto;
min-height: 36px;
padding: 0.4rem 0.7rem;
font-size: 0.84rem;
}
.house-experience {
display: grid;
grid-template-columns: minmax(0, 1.45fr) minmax(300px, 0.8fr);
gap: 1rem;
align-items: stretch;
}
.house-illustration,
.house-panel,
.house-directory {
border: 1px solid var(--border);
border-radius: 10px;
background: color-mix(in oklab, var(--surface) 84%, var(--house-plaster) 16%);
box-shadow: 0 20px 50px var(--house-shadow);
}
.house-illustration {
position: relative;
min-width: 0;
padding: clamp(1rem, 3vw, 2rem);
overflow: hidden;
background:
radial-gradient(circle at 14% 14%, rgba(255, 255, 255, 0.42) 0 2px, transparent 3px),
linear-gradient(to bottom, color-mix(in oklab, var(--surface) 68%, var(--house-blue) 32%) 0 34%, color-mix(in oklab, var(--surface) 76%, var(--house-green) 24%) 34% 100%);
}
.house-illustration::after {
content: "";
position: absolute;
right: -8%;
bottom: -10%;
width: 42%;
aspect-ratio: 1;
border-radius: 50% 50% 8% 8%;
background: color-mix(in oklab, var(--house-green) 78%, transparent);
opacity: 0.45;
pointer-events: none;
}
.house-roof {
position: relative;
z-index: 2;
width: 82%;
height: 85px;
margin: 0 auto -2px;
clip-path: polygon(50% 0, 100% 100%, 0 100%);
background:
repeating-linear-gradient(115deg, transparent 0 17px, rgba(255, 255, 255, 0.06) 18px 19px),
linear-gradient(145deg, #5b3427, #351f1b);
filter: drop-shadow(0 10px 10px rgba(30, 18, 12, 0.2));
}
.house-chimney {
position: absolute;
right: 19%;
top: 28px;
width: 32px;
height: 45px;
background: #513127;
}
.house-moon {
position: absolute;
top: 12px;
left: 50%;
color: #f6d98f;
font-size: 1.25rem;
transform: translateX(-50%);
text-shadow: 0 0 14px rgba(246, 217, 143, 0.7);
}
.house-shell {
position: relative;
z-index: 3;
max-width: 680px;
margin: 0 auto;
border: 8px solid var(--house-wood-dark);
border-bottom-width: 12px;
background: var(--house-wood-dark);
box-shadow: 0 20px 35px rgba(35, 22, 14, 0.3);
}
.house-floorplan {
display: grid;
grid-template-columns: repeat(6, minmax(0, 1fr));
grid-template-rows: minmax(105px, 0.75fr) repeat(2, minmax(128px, 1fr));
gap: 5px;
background: var(--house-wood-dark);
}
.house-room {
position: relative;
display: flex;
flex-direction: column;
align-items: flex-start;
justify-content: flex-end;
min-width: 0;
min-height: 108px;
overflow: hidden;
border: 0;
border-radius: 2px;
padding: 0.75rem;
background:
linear-gradient(90deg, transparent 49%, rgba(82, 53, 33, 0.15) 50%, transparent 51%),
repeating-linear-gradient(0deg, transparent 0 23px, rgba(82, 53, 33, 0.11) 24px 25px),
var(--house-plaster);
color: var(--house-ink);
text-align: left;
isolation: isolate;
transition: filter 180ms ease, transform 180ms ease, box-shadow 180ms ease;
}
.house-room::before {
content: "";
position: absolute;
z-index: -1;
top: 14px;
right: 14px;
width: 34px;
height: 46px;
border: 4px solid color-mix(in oklab, var(--house-wood) 80%, transparent);
border-bottom-width: 7px;
background:
linear-gradient(90deg, transparent 44%, rgba(67, 55, 44, 0.25) 45% 55%, transparent 56%),
linear-gradient(0deg, transparent 44%, rgba(67, 55, 44, 0.25) 45% 55%, transparent 56%),
color-mix(in oklab, var(--house-blue) 68%, #fff 32%);
box-shadow: 0 0 18px rgba(244, 207, 125, 0.18);
}
.house-room::after {
content: "";
position: absolute;
z-index: -1;
inset: 0;
background: radial-gradient(circle at 70% 25%, rgba(239, 190, 88, 0.55), transparent 42%);
opacity: 0;
transition: opacity 180ms ease;
}
.house-room:hover,
.house-room.is-selected {
z-index: 2;
background-color: #f1e2c1;
color: var(--house-ink);
transform: translateY(-2px);
box-shadow: inset 0 0 0 3px var(--house-lamp), 0 5px 15px rgba(42, 27, 17, 0.28);
}
.house-room:hover::after,
.house-room.is-selected::after,
.house-room.is-visited::after {
opacity: 1;
}
.house-room.is-visited:not(.is-selected) {
box-shadow: inset 0 0 0 2px color-mix(in oklab, var(--house-green) 70%, transparent);
}
.house-room.is-visited .house-room__name::after {
content: " · lit";
color: var(--house-green);
font-size: 0.68rem;
letter-spacing: 0.04em;
text-transform: uppercase;
}
.house-room:focus-visible,
.house-secret-door:focus-visible {
z-index: 4;
outline: 4px solid color-mix(in oklab, var(--house-lamp) 82%, #fff);
outline-offset: -5px;
}
.house-room__object {
position: absolute;
left: 0.7rem;
top: 0.55rem;
color: color-mix(in oklab, var(--house-wood) 85%, var(--house-ink));
font-size: clamp(1.35rem, 3vw, 2.1rem);
line-height: 1;
opacity: 0.88;
}
.house-room__name,
.house-room__hint {
position: relative;
z-index: 1;
}
.house-room__name {
font-weight: 900;
}
.house-room__hint {
margin-top: 0.15rem;
font-size: 0.72rem;
opacity: 0.72;
}
.house-room--attic {
grid-column: 1 / -1;
grid-row: 1;
justify-content: center;
padding-left: 2rem;
background-color: #d7c39d;
}
.house-room--attic::before {
width: 54px;
height: 32px;
border-radius: 50% 50% 0 0;
}
.house-room--study { grid-column: 1 / 3; grid-row: 2; }
.house-room--library { grid-column: 3 / 5; grid-row: 2; }
.house-room--foyer { grid-column: 5 / 7; grid-row: 2; background-color: #e5d3ae; }
.house-room--kitchen { grid-column: 1 / 3; grid-row: 3; background-color: #dfcda9; }
.house-room--workshop { grid-column: 3 / 5; grid-row: 3; background-color: #c8c3a5; }
.house-room--playroom { grid-column: 5 / 7; grid-row: 3; background-color: #dbc3ac; }
.house-room--garden {
grid-column: 1 / -1;
grid-row: 4;
min-height: 105px;
background:
radial-gradient(circle at 15% 65%, #bd846f 0 5px, transparent 6px),
radial-gradient(circle at 74% 50%, #dfb36d 0 4px, transparent 5px),
linear-gradient(to bottom, #a9c3be 0 40%, #829260 41% 100%);
}
.house-room--garden::before {
top: 12px;
right: 12%;
width: 15px;
height: 62px;
border: 0;
border-radius: 50% 50% 10% 10%;
background: #4c633e;
box-shadow: 10px -15px 0 8px #72835a, -9px -7px 0 6px #61784f;
}
.house-foundation {
display: grid;
grid-template-columns: repeat(4, 1fr);
height: 18px;
gap: 2px;
margin: 0 -8px -12px;
background: #7d6d5c;
}
.house-foundation span {
border: 1px solid rgba(54, 39, 29, 0.32);
}
.house-secret-wrap {
position: relative;
z-index: 4;
min-height: 88px;
display: grid;
place-items: center;
}
.house-secret-door[hidden] {
display: none;
}
.house-secret-door {
display: grid;
grid-template-columns: auto 1fr;
grid-template-rows: auto auto;
align-items: center;
column-gap: 0.65rem;
width: min(310px, 90%);
min-height: 68px;
border: 1px solid #2c2019;
padding: 0.6rem 0.85rem;
background:
repeating-linear-gradient(90deg, rgba(255, 255, 255, 0.04) 0 2px, transparent 2px 15px),
#3d2920;
color: #f0d8ab;
box-shadow: 0 9px 20px rgba(31, 20, 14, 0.35);
animation: house-door-appears 700ms ease both;
}
.house-secret-door > span {
grid-row: 1 / 3;
color: var(--house-lamp);
font-size: 1.6rem;
}
.house-secret-door strong,
.house-secret-door small {
text-align: left;
}
.house-secret-door small {
opacity: 0.72;
}
.house-secret-door.is-selected,
.house-secret-door:hover {
background-color: #221813;
color: #fff3d6;
box-shadow: 0 0 0 2px var(--house-lamp), 0 9px 25px rgba(31, 20, 14, 0.5);
}
.house-panel {
position: relative;
align-self: stretch;
min-height: 610px;
padding: clamp(1.2rem, 3vw, 2rem);
overflow: hidden;
background:
repeating-linear-gradient(0deg, rgba(75, 52, 34, 0.025) 0 1px, transparent 1px 7px),
color-mix(in oklab, var(--surface) 89%, var(--house-plaster) 11%);
}
.house-panel::after {
content: "";
position: absolute;
right: -28px;
bottom: -36px;
width: 125px;
height: 125px;
border: 14px solid color-mix(in oklab, var(--house-rug) 58%, transparent);
border-radius: 50%;
opacity: 0.15;
pointer-events: none;
}
.house-panel__window {
display: grid;
grid-template-columns: repeat(2, 1fr);
grid-template-rows: repeat(2, 1fr);
gap: 3px;
width: 72px;
height: 82px;
margin: 0 0 1.5rem auto;
border: 6px solid var(--house-wood);
background: var(--house-wood);
box-shadow: 0 8px 0 -4px var(--house-wood-dark), 0 0 30px rgba(231, 184, 90, 0.18);
}
.house-panel__window span {
background: linear-gradient(145deg, #9cb3b7, #f0cf89);
}
.house-panel__eyebrow {
margin: 0;
color: var(--house-green);
font-size: 0.76rem;
font-weight: 900;
letter-spacing: 0.12em;
text-transform: uppercase;
}
.house-panel h2 {
margin: 0.2rem 0 0.65rem;
font-size: clamp(1.6rem, 4vw, 2.25rem);
}
.house-panel__description {
color: var(--fg);
}
.house-panel__caption {
margin: 1rem 0 1.5rem;
padding-left: 0.8rem;
border-left: 3px solid var(--house-lamp);
color: var(--muted);
font-size: 0.9rem;
font-style: italic;
}
.house-shelves {
display: grid;
gap: 1.25rem;
}
.house-shelves h3 {
margin: 0 0 0.5rem;
color: var(--house-wood);
font-size: 0.72rem;
letter-spacing: 0.1em;
text-transform: uppercase;
}
.house-link-list {
display: grid;
gap: 0.35rem;
margin: 0;
padding: 0;
list-style: none;
}
.house-link-list li {
border-bottom: 1px solid color-mix(in oklab, var(--border) 65%, transparent);
}
.house-link-list a,
.house-empty {
display: block;
padding: 0.48rem 0.15rem;
}
.house-link-list a::after {
content: " ↗";
color: var(--house-lamp);
opacity: 0;
transition: opacity 130ms ease;
}
.house-link-list a:hover::after,
.house-link-list a:focus-visible::after {
opacity: 1;
}
.house-empty {
border-bottom: 0;
color: var(--muted);
font-size: 0.88rem;
font-style: italic;
}
.house-directory {
margin-top: 1rem;
padding: 0.85rem 1rem;
}
.house-directory summary {
color: var(--muted);
font-weight: 800;
cursor: pointer;
}
.house-directory__grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
gap: 0.75rem;
margin-top: 1rem;
}
.house-directory__grid section {
padding: 0.75rem;
border: 1px solid var(--border);
border-radius: 6px;
}
.house-directory__grid h2 {
margin: 0 0 0.35rem;
font-size: 1rem;
}
.house-noscript {
color: var(--muted);
font-style: italic;
}
@keyframes house-door-appears {
from { opacity: 0; transform: translateY(10px) scale(0.96); }
to { opacity: 1; transform: translateY(0) scale(1); }
}
@media (max-width: 880px) {
.house-experience {
grid-template-columns: 1fr;
}
.house-panel {
min-height: auto;
}
.house-panel__window {
position: absolute;
top: 1.25rem;
right: 1.25rem;
width: 54px;
height: 62px;
}
}
@media (max-width: 620px) {
.house-statusbar {
align-items: flex-start;
flex-direction: column;
}
.house-roof,
.house-foundation {
display: none;
}
.house-shell {
border-width: 5px;
}
.house-floorplan {
display: grid;
grid-template-columns: 1fr;
grid-template-rows: none;
gap: 4px;
}
.house-room,
.house-room--attic,
.house-room--study,
.house-room--library,
.house-room--foyer,
.house-room--kitchen,
.house-room--workshop,
.house-room--playroom,
.house-room--garden {
grid-column: 1;
grid-row: auto;
min-height: 92px;
padding-left: 4rem;
justify-content: center;
}
.house-room__object {
left: 1rem;
top: 50%;
transform: translateY(-50%);
}
.house-room::before {
top: 20px;
}
.house-room--garden::before {
right: 18%;
}
.house-panel__window {
opacity: 0.45;
}
}
@media (prefers-reduced-motion: reduce) {
.house-room,
.house-room::after,
.house-link-list a::after,
.house-secret-door {
animation: none;
transition: none;
}
}

View File

@@ -1,932 +0,0 @@
:root {
color-scheme: dark;
--lima-bg: #080a12;
--lima-panel: #111827;
--lima-panel-strong: #182238;
--lima-border: #d2a85c;
--lima-text: #fff5df;
--lima-muted: #c8c3b8;
--lima-accent: #ffd47b;
--lima-blue: #3d73a8;
--lima-danger: #bd4a56;
--lima-focus: #7ee7ff;
}
* {
box-sizing: border-box;
}
html,
body {
width: 100%;
height: 100%;
margin: 0;
overflow: hidden;
background: var(--lima-bg);
color: var(--lima-text);
font-family: Inter, "Noto Sans", system-ui, sans-serif;
}
button,
input,
select {
font: inherit;
}
button,
.lima-button-link,
.lima-exit {
min-height: 44px;
border: 2px solid #b99150;
border-radius: 5px;
background: #202d43;
color: var(--lima-text);
padding: 0.65rem 1rem;
font-weight: 800;
cursor: pointer;
text-decoration: none;
}
button:hover,
.lima-button-link:hover,
.lima-exit:hover {
background: #2b4162;
border-color: var(--lima-accent);
}
button:active {
transform: translateY(1px);
}
button:disabled {
cursor: not-allowed;
opacity: 0.48;
}
:focus-visible {
outline: 4px solid var(--lima-focus);
outline-offset: 3px;
}
[hidden] {
display: none !important;
}
.lima-rpg {
position: relative;
width: 100vw;
height: 100dvh;
overflow: hidden;
background: #080a12;
isolation: isolate;
}
.lima-rpg::before {
content: "";
position: absolute;
inset: 0;
z-index: -2;
background:
linear-gradient(90deg, rgb(5 8 16 / 0.82), rgb(5 8 16 / 0.15) 60%, rgb(5 8 16 / 0.45)),
url("/assets/images/play/princess-lima/title-landscape.png") center / cover no-repeat;
}
.lima-rpg__game {
position: absolute;
inset: 0 0 0 272px;
display: grid;
place-items: center;
overflow: hidden;
background: #080a12;
}
.lima-rpg__game canvas {
display: block;
max-width: none;
max-height: none;
image-rendering: pixelated;
transition: filter 320ms ease, transform 320ms ease;
}
.lima-rpg__loading,
.lima-main-menu,
.lima-setup {
position: absolute;
z-index: 50;
left: clamp(1rem, 6vw, 6rem);
top: 50%;
width: min(31rem, calc(100vw - 2rem));
transform: translateY(-50%);
border: 3px solid var(--lima-border);
border-radius: 8px;
background: rgb(10 15 27 / 0.96);
box-shadow: 0 20px 70px rgb(0 0 0 / 0.7);
padding: clamp(1.2rem, 3vw, 2.4rem);
}
.lima-rpg__loading {
display: grid;
gap: 0.75rem;
}
.lima-rpg__loading strong {
font-size: 1.4rem;
}
.lima-main-menu__eyebrow,
.lima-panel__eyebrow {
margin: 0 0 0.4rem;
color: var(--lima-accent);
font-size: 0.78rem;
font-weight: 900;
letter-spacing: 0.16em;
text-transform: uppercase;
}
.lima-main-menu h1 {
margin: 0;
color: #fff6d8;
font-family: Georgia, serif;
font-size: clamp(2.4rem, 6vw, 4.7rem);
line-height: 0.94;
text-shadow: 0 4px #2f1822;
}
.lima-main-menu__tagline {
max-width: 36ch;
color: var(--lima-muted);
font-size: 1.04rem;
line-height: 1.55;
}
.lima-menu-stack {
display: grid;
gap: 0.7rem;
}
.lima-menu-stack a {
display: grid;
place-items: center;
}
.lima-primary {
background: #8f5b28;
border-color: #f2c36c;
}
.lima-danger {
background: #612c38;
border-color: #e7888f;
}
.lima-hud {
position: absolute;
z-index: 30;
inset: 0 auto 0 0;
display: flex;
width: 272px;
flex-direction: column;
gap: 0;
overflow: auto;
border-right: 3px solid #b78b4d;
background:
linear-gradient(180deg, rgb(20 29 47 / 0.98), rgb(7 12 22 / 0.99)),
url("/assets/images/play/princess-lima/world-tiles.png");
box-shadow: 8px 0 24px rgb(0 0 0 / 0.38);
pointer-events: auto;
}
.lima-hud > div {
border-bottom: 1px solid rgb(214 174 99 / 0.38);
background: rgb(8 12 22 / 0.48);
padding: 0.72rem 0.85rem;
}
.lima-hud span {
display: block;
color: #c9c4b8;
font-size: 0.72rem;
font-weight: 800;
letter-spacing: 0.08em;
text-transform: uppercase;
}
.lima-hud strong {
display: block;
margin-top: 0.18rem;
color: #fff7df;
line-height: 1.2;
}
.lima-hud__identity {
display: grid;
grid-template-columns: 66px 1fr;
align-items: center;
gap: 0.7rem;
border-bottom: 2px solid #9d7440;
padding: 0.8rem;
}
.lima-hud__portrait {
width: 64px;
height: 64px;
border: 2px solid #d8b66d;
border-radius: 4px;
background-image: url("/assets/images/play/princess-lima/portrait-atlas-v2.png");
background-position: 100% 100%;
background-size: 400% 400%;
}
.lima-hud__equipment {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 0.2rem 0.55rem;
}
.lima-hud__equipment strong {
margin: 0 0 0.45rem;
font-size: 0.84rem;
text-align: right;
}
.lima-hud__objective strong {
display: -webkit-box;
overflow: hidden;
font-size: 0.9rem;
-webkit-box-orient: vertical;
-webkit-line-clamp: 3;
}
.lima-hud__healthbar,
.lima-boss__bar {
height: 8px;
margin-top: 0.38rem;
overflow: hidden;
border-radius: 999px;
background: #351d29;
}
.lima-hud__healthbar i,
.lima-boss__bar i {
display: block;
width: 100%;
height: 100%;
background: linear-gradient(90deg, #5bba6f, #d8df73);
}
.lima-hud__actions {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 0.42rem;
pointer-events: auto;
}
.lima-hud__actions button {
min-width: 0;
min-height: 42px;
padding: 0.35rem;
font-size: 0.72rem;
}
.lima-hud__actions .lima-button-link {
display: grid;
grid-column: 1 / -1;
place-items: center;
min-height: 38px;
font-size: 0.75rem;
}
.lima-hud kbd {
border: 1px solid #897553;
border-radius: 3px;
background: #090d16;
padding: 0.05rem 0.22rem;
}
.lima-hud__keys {
margin: auto 0 0;
border-top: 1px solid #654e32;
color: #bcb9b0;
padding: 0.65rem 0.8rem;
font-size: 0.68rem;
line-height: 1.45;
}
.lima-status-stack {
position: absolute;
z-index: 25;
left: calc(50% + 136px);
bottom: 1rem;
width: min(44rem, calc(100vw - 2rem));
transform: translateX(-50%);
text-align: center;
pointer-events: none;
}
.lima-prompt,
.lima-status {
display: table;
margin: 0.35rem auto;
border: 2px solid rgb(207 172 103 / 0.72);
border-radius: 4px;
background: rgb(5 8 15 / 0.94);
color: #fff5d9;
padding: 0.48rem 0.8rem;
font-weight: 800;
}
.lima-status {
color: #d7d4cc;
font-size: 0.88rem;
}
.lima-boss {
position: static;
width: auto;
border: 2px solid #bd6d8b;
background: rgb(18 8 25 / 0.95);
padding: 0.55rem 0.8rem;
text-align: center;
}
.lima-boss__bar i {
background: linear-gradient(90deg, #9d3961, #e28f98);
}
.lima-overlay,
.lima-setup {
position: absolute;
z-index: 100;
}
.lima-overlay {
inset: 0;
display: grid;
place-items: center;
background: rgb(3 5 10 / 0.78);
padding: 1rem;
}
.lima-panel {
width: min(46rem, 100%);
max-height: min(82dvh, 48rem);
overflow: auto;
border: 3px solid var(--lima-border);
border-radius: 7px;
background: var(--lima-panel);
box-shadow: 0 22px 80px rgb(0 0 0 / 0.8);
}
.lima-panel > header {
position: sticky;
top: 0;
z-index: 2;
display: flex;
align-items: center;
justify-content: space-between;
gap: 1rem;
border-bottom: 2px solid #8a6a3d;
background: var(--lima-panel-strong);
padding: 0.85rem 1rem;
}
.lima-panel h2 {
margin: 0;
color: #fff2cf;
font-family: Georgia, serif;
font-size: 1.7rem;
}
.lima-panel__body {
padding: 1rem;
line-height: 1.55;
}
.lima-panel-lead {
border-left: 4px solid var(--lima-accent);
background: #0b1220;
padding: 0.75rem;
}
.lima-list {
display: grid;
gap: 0.65rem;
margin: 0;
padding: 0;
list-style: none;
}
.lima-list li {
display: grid;
grid-template-columns: 1fr auto;
gap: 0.3rem 1rem;
border: 1px solid #536076;
border-radius: 4px;
background: #0b1220;
padding: 0.75rem;
}
.lima-list li.is-complete strong::before,
.lima-list li.complete strong::before {
content: "✓ ";
}
.lima-list small {
grid-column: 1 / -1;
color: var(--lima-muted);
}
.lima-list p {
grid-column: 1 / -1;
margin: 0;
color: var(--lima-muted);
}
.lima-dialogue {
display: grid;
grid-template-columns: 100px 1fr;
align-items: center;
gap: 1rem;
min-height: 9rem;
}
.lima-dialogue p {
margin: 0;
font-size: 1.1rem;
}
.lima-sprite {
width: 96px;
height: 96px;
background-image: url("/assets/images/play/princess-lima/cast-atlas.png");
background-size: 384px 384px;
background-position: 0 0;
image-rendering: pixelated;
}
.lima-sprite--4 { background-position: 0 -96px; }
.lima-sprite--5 { background-position: -96px -96px; }
.lima-sprite--6 { background-position: -192px -96px; }
.lima-sprite--7 { background-position: -288px -96px; }
.lima-sprite--8 { background-position: 0 -192px; }
.lima-sprite--11 { background-position: -288px -192px; }
.lima-setting,
.lima-check {
display: flex;
align-items: center;
justify-content: space-between;
gap: 1rem;
min-height: 52px;
border-bottom: 1px solid #39445a;
}
.lima-setting input {
width: min(18rem, 52vw);
}
.lima-check input {
width: 24px;
height: 24px;
}
.lima-confirm {
display: flex;
flex-wrap: wrap;
gap: 0.7rem;
}
.lima-setup {
display: block;
}
.lima-setup form {
display: grid;
gap: 0.85rem;
}
.lima-setup h2 {
margin: 0;
font-family: Georgia, serif;
font-size: 2rem;
}
.lima-setup label,
.lima-setup fieldset {
display: grid;
gap: 0.45rem;
}
.lima-setup input[type="text"] {
min-height: 48px;
border: 2px solid #7b6749;
border-radius: 4px;
background: #070b13;
color: #fff;
padding: 0.6rem;
}
.lima-setup fieldset {
grid-template-columns: repeat(3, 1fr);
border: 1px solid #786649;
padding: 0.75rem;
}
.lima-setup fieldset legend {
grid-column: 1 / -1;
}
.lima-setup fieldset label {
display: flex;
align-items: center;
}
.lima-setup__error {
min-height: 1.4em;
color: #ffb1b9;
}
.lima-intro {
position: absolute;
z-index: 120;
inset: 0;
overflow: hidden;
background: #03050a;
}
.lima-intro__picture {
position: absolute;
inset: 0;
background-image: url("/assets/images/play/princess-lima/intro-storyboard.png");
background-repeat: no-repeat;
background-position: 0 0;
background-size: 200% 200%;
image-rendering: pixelated;
animation: lima-cinematic-pan 15s ease-in-out both;
}
.lima-intro__picture[data-panel="1"] { background-position: 100% 0; }
.lima-intro__picture[data-panel="2"] { background-position: 0 100%; }
.lima-intro__picture[data-panel="3"] { background-position: 100% 100%; }
.lima-intro__vignette {
position: absolute;
inset: 0;
background: linear-gradient(180deg, rgb(0 0 0 / 0.22), transparent 40%, rgb(0 0 0 / 0.75));
pointer-events: none;
}
.lima-intro__subtitle {
position: absolute;
left: 50%;
bottom: 5.2rem;
width: min(58rem, calc(100% - 3rem));
transform: translateX(-50%);
border: 2px solid #d7b76d;
border-radius: 4px;
background: rgb(4 7 14 / 0.94);
color: #fff9e9;
padding: 0.85rem 1.1rem;
font-family: Georgia, serif;
font-size: clamp(1rem, 2.1vw, 1.45rem);
line-height: 1.45;
text-align: center;
text-shadow: 0 2px #000;
}
.lima-intro__progress {
position: absolute;
right: 1rem;
bottom: 1rem;
left: 1rem;
height: 6px;
overflow: hidden;
border-radius: 999px;
background: #251d2a;
}
.lima-intro__progress i {
display: block;
width: 0;
height: 100%;
background: #f1c66e;
transition: width 0.4s linear;
}
.lima-intro__controls {
position: absolute;
z-index: 2;
top: 0.75rem;
right: 0.75rem;
display: flex;
align-items: center;
gap: 0.45rem;
border: 1px solid #75633e;
background: rgb(3 5 10 / 0.86);
padding: 0.4rem;
}
.lima-intro__controls button {
min-height: 38px;
padding: 0.38rem 0.65rem;
font-size: 0.78rem;
}
.lima-intro__controls span {
color: #e5dcc5;
padding: 0 0.35rem;
font-size: 0.76rem;
}
.lima-intro.is-paused .lima-intro__picture {
animation-play-state: paused;
}
@keyframes lima-cinematic-pan {
from { transform: scale(1.02) translate3d(-0.5%, 0, 0); }
to { transform: scale(1.09) translate3d(0.5%, -0.5%, 0); }
}
.lima-rpg.is-high-contrast {
--lima-panel: #000;
--lima-panel-strong: #000;
--lima-text: #fff;
--lima-muted: #fff;
--lima-border: #ffdf00;
--lima-focus: #00ffff;
}
.lima-rpg:fullscreen {
width: 100vw;
height: 100vh;
}
.lima-screenreader {
position: fixed;
width: 1px;
height: 1px;
overflow: hidden;
clip-path: inset(50%);
white-space: nowrap;
}
.lima-rpg.is-dialogue-blur .lima-rpg__game canvas {
filter: blur(4px) saturate(0.58) brightness(0.62);
transform: scale(1.015);
}
.lima-rpg.is-dialogue-depth .lima-rpg__game canvas {
filter: saturate(0.68) brightness(0.55);
}
.lima-panel[data-kind="dialogue"] {
position: absolute;
right: clamp(1rem, 4vw, 4rem);
bottom: clamp(1rem, 4vh, 3rem);
left: max(288px, clamp(1rem, 4vw, 4rem));
width: auto;
max-height: none;
overflow: visible;
border-color: #e4c477;
background:
linear-gradient(135deg, rgb(23 25 39 / 0.98), rgb(8 12 23 / 0.98)),
url("/assets/images/play/princess-lima/world-tiles.png");
box-shadow: 0 18px 70px rgb(0 0 0 / 0.82), inset 0 0 0 1px rgb(255 239 190 / 0.16);
}
.lima-panel[data-kind="dialogue"] > header {
display: none;
}
.lima-panel[data-kind="dialogue"] .lima-panel__body {
padding: 0;
}
.lima-cinematic-dialogue {
display: grid;
grid-template-columns: minmax(170px, 26%) 1fr;
min-height: 236px;
overflow: hidden;
}
.lima-cinematic-dialogue__portrait {
min-height: 236px;
border-right: 2px solid #a8844d;
background-image:
linear-gradient(0deg, rgb(7 10 18 / 0.3), transparent 45%),
url("/assets/images/play/princess-lima/portrait-atlas-v2.png");
background-repeat: no-repeat;
background-size: 400% 400%;
image-rendering: auto;
animation: lima-portrait-arrive 320ms ease-out both;
}
.lima-cinematic-dialogue__copy {
display: flex;
flex-direction: column;
padding: 1.1rem 1.25rem;
}
.lima-cinematic-dialogue__speaker {
margin: 0 0 0.6rem;
color: #f6d785;
font-family: Georgia, serif;
font-size: clamp(1.25rem, 2.2vw, 1.8rem);
font-weight: 800;
}
.lima-cinematic-dialogue__speaker span {
margin-left: 0.5rem;
color: #b8c1ce;
font-family: Inter, system-ui, sans-serif;
font-size: 0.72rem;
letter-spacing: 0.12em;
text-transform: uppercase;
}
.lima-cinematic-dialogue__text {
flex: 1;
margin: 0;
color: #fff8e7;
font-family: Georgia, serif;
font-size: clamp(1rem, 1.7vw, 1.28rem);
line-height: 1.55;
}
.lima-cinematic-dialogue__choices {
display: grid;
gap: 0.48rem;
margin: 0.8rem 0;
}
.lima-cinematic-dialogue__choices button {
display: grid;
grid-template-columns: 2rem 1fr;
align-items: center;
border-color: #7d94aa;
background: rgb(24 41 59 / 0.82);
text-align: left;
}
.lima-cinematic-dialogue__choices button span {
display: grid;
width: 1.5rem;
height: 1.5rem;
place-items: center;
border: 1px solid #e3bf6d;
border-radius: 50%;
color: #f4d27e;
}
.lima-cinematic-dialogue__controls {
display: flex;
flex-wrap: wrap;
justify-content: flex-end;
gap: 0.5rem;
}
.lima-history {
width: min(44rem, calc(100% - 2rem));
max-height: 78dvh;
overflow: auto;
border: 3px solid var(--lima-border);
background: #0b111e;
color: var(--lima-text);
padding: 1rem;
}
.lima-history::backdrop {
background: rgb(2 4 8 / 0.8);
}
.lima-history li {
margin-bottom: 0.75rem;
border-left: 3px solid #9e7c46;
padding-left: 0.75rem;
}
.lima-history p {
margin: 0.2rem 0;
}
.lima-settings-grid {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 0.65rem;
}
.lima-settings-grid label {
display: flex;
min-height: 48px;
align-items: center;
justify-content: space-between;
gap: 0.75rem;
border: 1px solid #46546a;
background: #0b1220;
padding: 0.65rem;
}
.lima-settings-grid input[type="checkbox"] {
width: 24px;
height: 24px;
}
.lima-ending-mark {
color: #f4d37e;
font-family: Georgia, serif;
font-size: 1.7rem;
text-align: center;
}
.lima-rpg[data-saved="true"]::after {
content: "Journey saved";
position: absolute;
z-index: 80;
top: 1rem;
right: 1rem;
border: 1px solid #d6b466;
background: rgb(6 10 18 / 0.9);
color: #fff2cd;
padding: 0.48rem 0.7rem;
}
@keyframes lima-portrait-arrive {
from { opacity: 0; transform: translateX(-14px); }
to { opacity: 1; transform: translateX(0); }
}
@media (max-width: 820px) {
.lima-hud {
width: 220px;
}
.lima-rpg__game {
left: 220px;
}
.lima-status-stack {
left: calc(50% + 110px);
width: min(38rem, calc(100vw - 238px));
}
.lima-main-menu,
.lima-rpg__loading,
.lima-setup {
left: 1rem;
top: 50%;
}
.lima-intro__controls span {
display: none;
}
.lima-panel[data-kind="dialogue"] {
left: 232px;
}
.lima-cinematic-dialogue {
grid-template-columns: 130px 1fr;
}
.lima-settings-grid {
grid-template-columns: 1fr;
}
}
@media (max-height: 560px) and (orientation: landscape) {
.lima-hud {
width: 210px;
}
.lima-rpg__game {
left: 210px;
}
.lima-status-stack {
left: calc(50% + 105px);
bottom: 0.35rem;
}
.lima-status {
display: none;
}
.lima-main-menu {
padding: 1rem;
}
.lima-main-menu h1 {
font-size: 2.6rem;
}
}
@media (prefers-reduced-motion: reduce) {
*,
*::before,
*::after {
scroll-behavior: auto !important;
transition: none !important;
animation: none !important;
}
}

File diff suppressed because one or more lines are too long

View File

@@ -1,533 +0,0 @@
@import "tailwindcss/theme";
@import "tailwindcss/utilities";
@theme {
--font-display: Georgia, "Times New Roman", serif;
--font-body: Inter, ui-sans-serif, system-ui, sans-serif;
--color-river-950: #07131b;
--color-river-900: #0c2028;
--color-river-700: #174653;
--color-moon-100: #fff8df;
--color-moon-300: #f1d894;
--color-hibiscus-500: #c7475d;
}
/* Preflight is intentionally omitted: this file is isolated to the standalone game. */
:root {
--tr-ink: #07131b;
--tr-deep: #0c2028;
--tr-teal: #174653;
--tr-paper: #fff8df;
--tr-gold: #f1d894;
--tr-copper: #b97145;
--tr-rose: #c7475d;
--tr-shadow: 0 28px 80px rgb(1 10 14 / .56);
}
* { box-sizing: border-box; }
[hidden] { display: none !important; }
html, body {
width: 100%;
min-height: 100%;
margin: 0;
overflow: hidden;
background: var(--tr-ink);
color: var(--tr-paper);
font-family: Inter, ui-sans-serif, system-ui, sans-serif;
}
button, a, input, select { font: inherit; }
button, a { -webkit-tap-highlight-color: transparent; }
button:focus-visible, a:focus-visible, input:focus-visible, select:focus-visible {
outline: 3px solid var(--tr-gold);
outline-offset: 3px;
}
.tr-app {
position: fixed;
inset: 0;
isolation: isolate;
overflow: hidden;
background:
radial-gradient(circle at 70% 10%, rgb(235 198 109 / .16), transparent 32%),
linear-gradient(145deg, #102d35, #050d13 70%);
}
.tr-app::after {
position: absolute;
inset: 0;
z-index: 2;
pointer-events: none;
content: "";
background: linear-gradient(180deg, rgb(0 0 0 / .05), transparent 55%, rgb(0 5 8 / .58));
}
.tr-canvas {
position: absolute;
inset: 0;
z-index: 1;
}
.tr-canvas canvas {
display: block;
width: 100% !important;
height: 100% !important;
object-fit: cover;
}
.tr-atmosphere {
position: absolute;
inset: 0;
z-index: 3;
overflow: hidden;
pointer-events: none;
}
.tr-atmosphere i {
position: absolute;
width: 5px;
height: 5px;
border-radius: 50%;
background: #ffe69a;
box-shadow: 0 0 16px 4px rgb(255 225 132 / .72);
animation: tr-drift 9s ease-in-out infinite;
}
.tr-atmosphere i:nth-child(1) { left: 18%; top: 34%; }
.tr-atmosphere i:nth-child(2) { left: 74%; top: 23%; animation-delay: -3s; }
.tr-atmosphere i:nth-child(3) { left: 57%; top: 68%; animation-delay: -6s; }
@keyframes tr-drift {
0%, 100% { transform: translate3d(0, 0, 0); opacity: .2; }
50% { transform: translate3d(42px, -32px, 0); opacity: .9; }
}
.tr-screen {
position: absolute;
inset: 0;
z-index: 30;
display: grid;
place-items: center;
padding: max(24px, env(safe-area-inset-top)) max(24px, env(safe-area-inset-right)) max(24px, env(safe-area-inset-bottom)) max(24px, env(safe-area-inset-left));
overflow: auto;
background:
linear-gradient(90deg, rgb(5 17 23 / .9), rgb(5 17 23 / .38)),
url("/assets/games/two-rivers/images/backgrounds/courtyard.webp") center/cover no-repeat;
}
.tr-screen::before {
position: absolute;
inset: 20px;
border: 1px solid rgb(241 216 148 / .42);
border-radius: 28px;
pointer-events: none;
content: "";
}
.tr-card, .tr-menu__copy {
position: relative;
width: min(680px, 100%);
padding: clamp(28px, 5vw, 64px);
border: 1px solid rgb(241 216 148 / .36);
border-radius: 28px;
background: linear-gradient(145deg, rgb(9 32 39 / .94), rgb(4 15 21 / .88));
box-shadow: var(--tr-shadow);
backdrop-filter: blur(16px);
}
.tr-card--narrow { width: min(560px, 100%); }
.tr-menu {
place-items: center start;
background-position: center;
}
.tr-menu__copy { margin-left: clamp(0px, 7vw, 120px); }
.tr-kicker {
margin: 0 0 12px;
color: var(--tr-gold);
font-size: .72rem;
font-weight: 800;
letter-spacing: .22em;
text-transform: uppercase;
}
.tr-screen h1 {
margin: 0;
color: var(--tr-paper);
font: 500 clamp(3rem, 8vw, 7.6rem)/.78 Georgia, "Times New Roman", serif;
letter-spacing: -.065em;
text-wrap: balance;
text-shadow: 0 5px 24px rgb(0 0 0 / .5);
}
.tr-screen h1 em {
color: var(--tr-gold);
font-size: .54em;
font-weight: 400;
letter-spacing: -.025em;
}
.tr-card h1 { font-size: clamp(2.9rem, 7vw, 5.4rem); }
.tr-card p, .tr-lede { max-width: 54ch; color: #e5e3d6; font-size: clamp(.98rem, 1.5vw, 1.14rem); line-height: 1.7; }
.tr-lede { margin: 28px 0; }
.tr-actions {
display: grid;
gap: 10px;
width: min(360px, 100%);
}
.tr-actions--row {
grid-template-columns: 1fr 1fr;
width: 100%;
margin-top: 24px;
}
button, .tr-secondary {
min-height: 46px;
border: 1px solid rgb(241 216 148 / .28);
border-radius: 12px;
color: var(--tr-paper);
background: rgb(255 255 255 / .06);
padding: 11px 16px;
cursor: pointer;
text-align: center;
text-decoration: none;
transition: border-color .2s, background .2s, transform .2s;
}
button:hover:not(:disabled), .tr-secondary:hover {
border-color: rgb(241 216 148 / .7);
background: rgb(241 216 148 / .12);
transform: translateY(-1px);
}
button:disabled { cursor: not-allowed; opacity: .38; }
.tr-primary {
border-color: #f4db94;
color: #152129;
background: linear-gradient(135deg, #ffe9a9, #d9a75d);
box-shadow: 0 8px 24px rgb(208 155 72 / .24);
font-weight: 800;
}
.tr-primary:hover:not(:disabled) { color: #081219; background: linear-gradient(135deg, #fff2c6, #e9bd76); }
.tr-loading {
position: absolute;
inset: 0;
z-index: 50;
display: grid;
place-items: center;
background: #07131b;
}
.tr-loading > div {
display: grid;
gap: 18px;
width: min(420px, calc(100% - 48px));
text-align: center;
}
.tr-loading progress {
width: 100%;
height: 6px;
overflow: hidden;
border: 0;
border-radius: 999px;
accent-color: var(--tr-gold);
}
.tr-hud {
position: absolute;
top: max(18px, env(safe-area-inset-top));
right: max(18px, env(safe-area-inset-right));
left: max(18px, env(safe-area-inset-left));
z-index: 10;
display: grid;
grid-template-columns: auto minmax(240px, 1fr) auto;
gap: 18px;
align-items: center;
padding: 10px 12px 10px 18px;
border: 1px solid rgb(241 216 148 / .35);
border-radius: 18px;
background: rgb(5 18 24 / .8);
box-shadow: 0 14px 40px rgb(0 0 0 / .26);
backdrop-filter: blur(13px);
}
.tr-hud p { margin: 0; }
.tr-hud > div p { color: var(--tr-gold); font-size: .66rem; font-weight: 800; letter-spacing: .14em; text-transform: uppercase; }
.tr-hud strong { font: 600 1.08rem Georgia, serif; }
.tr-objective { overflow: hidden; color: #d9ddd7; font-size: .88rem; text-align: center; text-overflow: ellipsis; white-space: nowrap; }
.tr-hud nav { display: flex; gap: 8px; }
.tr-hud button { min-height: 38px; padding: 7px 12px; font-size: .78rem; }
kbd { color: var(--tr-gold); font: inherit; }
.tr-interact {
position: absolute;
bottom: 15%;
left: 50%;
z-index: 12;
transform: translateX(-50%);
}
.tr-interact button {
border-color: rgb(241 216 148 / .6);
border-radius: 999px;
background: rgb(4 17 23 / .85);
box-shadow: 0 12px 34px rgb(0 0 0 / .35);
backdrop-filter: blur(10px);
}
.tr-interact kbd {
display: inline-grid;
width: 26px;
height: 26px;
margin-right: 7px;
place-items: center;
border-radius: 50%;
color: #17232a;
background: var(--tr-gold);
font-weight: 900;
}
.tr-touch {
position: absolute;
right: max(18px, env(safe-area-inset-right));
bottom: max(18px, env(safe-area-inset-bottom));
left: max(18px, env(safe-area-inset-left));
z-index: 14;
display: flex;
justify-content: space-between;
pointer-events: none;
}
.tr-touch button {
width: 64px;
height: 64px;
border-radius: 50%;
font-size: 1.5rem;
pointer-events: auto;
touch-action: none;
backdrop-filter: blur(10px);
}
.tr-touch button:nth-child(2) { margin-right: auto; margin-left: 9px; }
.tr-touch button:last-child { color: var(--tr-gold); font-size: 1.2rem; }
.tr-overlay {
position: absolute;
inset: 0;
z-index: 40;
display: grid;
place-items: center;
padding: max(18px, env(safe-area-inset-top)) max(18px, env(safe-area-inset-right)) max(18px, env(safe-area-inset-bottom)) max(18px, env(safe-area-inset-left));
background: rgb(2 10 14 / .72);
backdrop-filter: blur(10px);
}
.tr-panel {
width: min(940px, 100%);
max-height: min(90vh, 820px);
overflow: hidden;
border: 1px solid rgb(241 216 148 / .5);
border-radius: 24px;
background:
radial-gradient(circle at 100% 0, rgb(199 71 93 / .12), transparent 30%),
linear-gradient(145deg, #102d35, #07131b);
box-shadow: var(--tr-shadow);
}
.tr-panel > header {
display: grid;
grid-template-columns: 1fr auto;
align-items: center;
padding: 22px 24px;
border-bottom: 1px solid rgb(241 216 148 / .18);
}
.tr-panel > header .tr-kicker { grid-column: 1; margin-bottom: 3px; }
.tr-panel h2 { grid-column: 1; margin: 0; font: 500 clamp(1.8rem, 4vw, 3rem)/1 Georgia, serif; }
.tr-panel > header button { grid-row: 1 / 3; grid-column: 2; width: 44px; padding: 0; font-size: 1.6rem; }
.tr-panel__body {
max-height: calc(min(90vh, 820px) - 100px);
padding: clamp(20px, 4vw, 38px);
overflow: auto;
}
.tr-panel h3 { margin: 0 0 12px; color: var(--tr-gold); font: 500 1.35rem Georgia, serif; }
.tr-panel-lede { max-width: 65ch; margin: 0 0 24px; color: #e2e3db; line-height: 1.7; }
.tr-tabs { display: grid; grid-template-columns: 1.2fr 1fr; gap: 28px; }
.tr-tabs section:last-child { grid-column: 1 / -1; }
.tr-ledger, .tr-history { display: grid; gap: 8px; margin: 0; padding: 0; list-style: none; }
.tr-ledger li {
display: grid;
grid-template-columns: minmax(120px, 1fr) auto;
gap: 4px 18px;
padding: 12px 14px;
border: 1px solid rgb(255 255 255 / .08);
border-radius: 12px;
background: rgb(255 255 255 / .035);
}
.tr-ledger li strong { color: var(--tr-gold); }
.tr-ledger li small { grid-column: 1 / -1; color: #acbbb9; }
.tr-chips { display: flex; flex-wrap: wrap; gap: 8px; }
.tr-chip { padding: 7px 10px; border: 1px solid rgb(241 216 148 / .25); border-radius: 999px; color: #e8e2ca; text-transform: capitalize; }
.tr-settings { display: grid; grid-template-columns: 1fr 1fr; gap: 10px 18px; }
.tr-settings label {
display: flex;
min-height: 50px;
align-items: center;
justify-content: space-between;
gap: 18px;
padding: 8px 12px;
border-bottom: 1px solid rgb(255 255 255 / .08);
}
.tr-settings input[type="checkbox"] { width: 22px; height: 22px; accent-color: var(--tr-gold); }
.tr-settings input[type="range"] { width: min(180px, 50%); accent-color: var(--tr-gold); }
.tr-settings select { min-width: 120px; border: 1px solid rgb(241 216 148 / .3); border-radius: 8px; color: var(--tr-paper); background: var(--tr-deep); padding: 7px; text-transform: capitalize; }
.tr-save-slots { display: grid; gap: 10px; }
.tr-save-slots article { display: grid; grid-template-columns: 1fr auto auto; gap: 10px; align-items: center; padding: 14px; border: 1px solid rgb(255 255 255 / .09); border-radius: 14px; }
.tr-save-slots article div { display: grid; gap: 2px; }
.tr-save-slots article span, .tr-save-slots article small { color: #9fb1af; }
.tr-dialogue {
position: absolute;
right: clamp(18px, 5vw, 70px);
bottom: max(18px, env(safe-area-inset-bottom));
left: clamp(18px, 5vw, 70px);
z-index: 35;
display: grid;
grid-template-columns: minmax(150px, 23%) 1fr;
min-height: 230px;
max-height: min(48vh, 420px);
border: 1px solid rgb(241 216 148 / .62);
border-radius: 24px;
background:
radial-gradient(circle at 10% 0, rgb(199 71 93 / .16), transparent 35%),
linear-gradient(145deg, rgb(12 40 48 / .97), rgb(4 16 22 / .97));
box-shadow: var(--tr-shadow);
overflow: hidden;
backdrop-filter: blur(18px);
}
.tr-portrait {
min-height: 230px;
background-position: center bottom;
background-size: contain;
background-repeat: no-repeat;
filter: drop-shadow(8px 0 20px rgb(0 0 0 / .35));
mask-image: linear-gradient(90deg, #000 74%, transparent);
}
.tr-dialogue__copy { display: flex; min-width: 0; flex-direction: column; padding: clamp(18px, 3vw, 30px); }
.tr-speaker { margin: 0 0 9px; color: var(--tr-gold); font: 600 clamp(1.25rem, 2.4vw, 1.8rem) Georgia, serif; }
.tr-line { min-height: 3.4em; margin: 0; color: #fffdf1; font: 400 clamp(1rem, 1.8vw, 1.22rem)/1.65 Georgia, serif; }
.tr-choices { display: grid; gap: 7px; margin-top: 12px; overflow: auto; }
.tr-choices button { display: grid; grid-template-columns: 30px 1fr; align-items: center; text-align: left; }
.tr-choices button span { color: var(--tr-gold); font-weight: 900; }
.tr-dialogue__controls { display: flex; gap: 7px; margin-top: auto; padding-top: 12px; }
.tr-dialogue__controls button { min-height: 36px; padding: 6px 11px; font-size: .76rem; }
.tr-dialogue__controls button.is-active { color: var(--tr-ink); background: var(--tr-gold); }
.tr-history li { padding: 14px; border-bottom: 1px solid rgb(255 255 255 / .08); }
.tr-history strong { color: var(--tr-gold); }
.tr-history p { margin: 5px 0 0; line-height: 1.55; }
.tr-puzzle-sequence, .tr-cooking, .tr-dance { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; margin: 20px 0; }
.tr-puzzle-sequence button, .tr-cooking button { min-height: 80px; color: var(--tr-gold); font: 500 1.1rem Georgia, serif; }
.tr-archery { position: relative; height: 96px; margin: 25px 10px; border: 1px solid rgb(241 216 148 / .25); border-radius: 999px; background: linear-gradient(90deg, rgb(199 71 93 / .22), rgb(241 216 148 / .16) 42%, rgb(241 216 148 / .45) 50%, rgb(241 216 148 / .16) 58%, rgb(199 71 93 / .22)); }
.tr-archery i { position: absolute; top: 8px; bottom: 8px; width: 5px; border-radius: 999px; background: #fff3bd; box-shadow: 0 0 18px #ffe18b; transform: translateX(-50%); }
.tr-archery b { position: absolute; top: 0; bottom: 0; left: 50%; width: 16%; border: 2px solid var(--tr-gold); border-radius: 999px; transform: translateX(-50%); }
.tr-dance-cue { margin: 15px auto; color: var(--tr-gold); font-size: clamp(4rem, 14vw, 8rem); text-align: center; text-shadow: 0 0 35px rgb(241 216 148 / .45); }
.tr-dance button { min-height: 70px; font-size: 2rem; }
.tr-gifts { display: grid; grid-template-columns: repeat(2, 1fr); gap: 10px; }
.tr-gift { display: grid; grid-template-columns: 72px 1fr; gap: 7px 13px; align-items: center; padding: 14px; text-align: left; }
.tr-gift img { grid-row: span 2; width: 72px; height: 72px; object-fit: contain; }
.tr-gift strong { color: var(--tr-gold); font: 500 1.15rem Georgia, serif; }
.tr-gift small { color: #bdc8c3; line-height: 1.45; }
.tr-gallery { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; }
.tr-gallery figure { margin: 0; overflow: hidden; border: 1px solid rgb(241 216 148 / .22); border-radius: 14px; background: rgb(255 255 255 / .04); }
.tr-gallery img, .tr-gallery figure > div { display: grid; width: 100%; aspect-ratio: 16 / 10; object-fit: cover; place-items: center; color: rgb(241 216 148 / .3); font: 5rem Georgia, serif; }
.tr-gallery figcaption { padding: 8px 10px; text-transform: capitalize; }
.tr-gallery .is-locked { filter: saturate(0); opacity: .55; }
.tr-ending { display: grid; grid-template-columns: 1.2fr 1fr; gap: 24px; margin: 0; }
.tr-ending img { width: 100%; min-height: 320px; border-radius: 16px; object-fit: cover; }
.tr-ending figcaption { align-self: center; }
.tr-ending p { font: 400 1.18rem/1.7 Georgia, serif; }
.tr-ending blockquote { margin: 24px 0 0; padding-left: 18px; border-left: 2px solid var(--tr-gold); color: var(--tr-gold); font: italic 1rem/1.7 Georgia, serif; }
.tr-toast-stack {
position: absolute;
top: 94px;
right: max(20px, env(safe-area-inset-right));
z-index: 60;
display: grid;
width: min(360px, calc(100% - 40px));
gap: 8px;
pointer-events: none;
}
.tr-toast-stack p { margin: 0; padding: 12px 15px; border: 1px solid rgb(241 216 148 / .35); border-radius: 12px; color: var(--tr-paper); background: rgb(5 20 27 / .92); box-shadow: 0 10px 28px rgb(0 0 0 / .28); }
.tr-live { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
.tr-rotate {
position: absolute;
inset: 0;
z-index: 50;
display: grid;
place-items: center;
padding: 40px;
color: var(--tr-gold);
background: #07131b;
font: 500 1.5rem/1.5 Georgia, serif;
text-align: center;
}
.tr-high-contrast { --tr-paper: #fff; --tr-gold: #ffe17f; }
.tr-high-contrast .tr-dialogue, .tr-high-contrast .tr-panel, .tr-high-contrast .tr-hud { background: #000; }
@media (max-width: 760px) {
.tr-screen::before { inset: 9px; border-radius: 18px; }
.tr-menu { place-items: end stretch; }
.tr-menu__copy { margin: 0; padding: 28px; }
.tr-hud { grid-template-columns: 1fr auto; }
.tr-objective { display: none; }
.tr-hud nav button:first-child, .tr-hud nav button:nth-child(2) { display: none; }
.tr-dialogue { grid-template-columns: 110px 1fr; max-height: 60vh; }
.tr-portrait { min-height: 200px; }
.tr-dialogue__copy { padding: 16px; }
.tr-dialogue__controls button:nth-child(2), .tr-dialogue__controls button:nth-child(4) { display: none; }
.tr-tabs, .tr-settings, .tr-ending { grid-template-columns: 1fr; }
.tr-tabs section:last-child { grid-column: auto; }
.tr-gallery { grid-template-columns: repeat(2, 1fr); }
.tr-gifts { grid-template-columns: 1fr; }
.tr-panel__body { padding: 18px; }
}
@media (max-width: 699px) and (orientation: portrait) {
.tr-exploring .tr-rotate { display: grid !important; }
}
@media (max-height: 540px) and (orientation: landscape) {
.tr-hud { top: 8px; right: 8px; left: 8px; padding-block: 6px; }
.tr-dialogue { right: 12px; bottom: 8px; left: 12px; min-height: 180px; max-height: 66vh; }
.tr-portrait { min-height: 180px; }
.tr-line { line-height: 1.45; }
.tr-touch button { width: 52px; height: 52px; }
}
@media (prefers-reduced-motion: reduce) {
*, *::before, *::after { scroll-behavior: auto !important; animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }
}