Files
trail-mate/site/styles.css
T

1672 lines
32 KiB
CSS

:root {
color-scheme: light;
--animal-primary: #19c8b9;
--animal-primary-hover: #3dd4c6;
--animal-primary-active: #11a89b;
--animal-primary-bg: #e6f9f6;
--animal-success: #6fba2c;
--animal-warning: #f5c31c;
--animal-error: #e05a5a;
--animal-text: #794f27;
--animal-text-body: #725d42;
--animal-text-muted: #8a7b66;
--animal-text-secondary: #9f927d;
--animal-border: #c4b89e;
--animal-border-strong: #9f927d;
--animal-border-hover: #a89878;
--animal-bg: #f8f8f0;
--animal-bg-content: #f7f3df;
--animal-bg-soft: #fffaf0;
--animal-shadow-btn: #bdaea0;
--animal-shadow-input: #d4c9b4;
--animal-focus: #ffcc00;
--trail-sky: #7db7d8;
--trail-blue: #4c78a8;
--trail-leaf: #7cb342;
--trail-coral: #e05a5a;
--trail-ink: #2f4b4a;
--surface: rgba(255, 252, 244, 0.94);
--surface-solid: #fffaf0;
--line: rgba(159, 146, 125, 0.48);
--radius-sm: 12px;
--radius-md: 18px;
--radius-lg: 24px;
--radius-pill: 50px;
--ease: cubic-bezier(0.4, 0, 0.2, 1);
--esp-tools-button-color: var(--animal-primary);
--esp-tools-button-text-color: #0f3e38;
--esp-tools-button-border-radius: 24px;
}
* {
box-sizing: border-box;
}
html {
scroll-behavior: smooth;
}
body {
margin: 0;
min-height: 100vh;
color: var(--animal-text-body);
font-family:
Nunito,
"Noto Sans SC",
"Zen Maru Gothic",
-apple-system,
BlinkMacSystemFont,
"Segoe UI",
sans-serif;
font-weight: 500;
background:
repeating-linear-gradient(
90deg,
rgba(25, 200, 185, 0.05) 0 1px,
transparent 1px 56px
),
repeating-linear-gradient(
0deg,
rgba(124, 179, 66, 0.045) 0 1px,
transparent 1px 56px
),
linear-gradient(180deg, #e6f9f6 0, var(--animal-bg) 280px, #fff8e7 100%);
}
body::before {
content: "";
position: fixed;
inset: 0;
z-index: -1;
pointer-events: none;
background:
linear-gradient(135deg, rgba(245, 195, 28, 0.2), transparent 32%),
linear-gradient(315deg, rgba(125, 183, 216, 0.18), transparent 36%);
}
a {
color: inherit;
text-decoration: none;
}
button {
font: inherit;
}
.page-shell {
width: min(1320px, calc(100% - 32px));
margin: 0 auto;
padding: 18px 0 64px;
}
.topbar {
position: sticky;
top: 10px;
z-index: 20;
display: flex;
align-items: center;
justify-content: space-between;
gap: 20px;
padding: 12px 16px;
border: 2px solid rgba(159, 146, 125, 0.5);
border-radius: var(--radius-lg);
background: rgba(255, 252, 244, 0.9);
box-shadow: 0 5px 0 0 rgba(189, 174, 160, 0.8);
backdrop-filter: blur(14px);
}
.brand {
display: inline-flex;
align-items: center;
gap: 12px;
min-width: max-content;
color: var(--animal-text);
font-weight: 900;
}
.brand-logo {
display: block;
width: 58px;
height: 38px;
object-fit: contain;
filter: drop-shadow(0 4px 0 rgba(189, 174, 160, 0.55));
}
.brand-text {
color: var(--animal-text);
font-size: 1rem;
}
.top-actions {
display: flex;
flex-wrap: wrap;
justify-content: flex-end;
align-items: center;
gap: 8px;
}
.top-link,
.lang-button {
display: inline-flex;
align-items: center;
justify-content: center;
min-height: 36px;
padding: 0 14px;
border: 2px solid transparent;
border-radius: var(--radius-pill);
color: var(--animal-text-muted);
font-weight: 900;
line-height: 1;
transition:
background-color 160ms var(--ease),
border-color 160ms var(--ease),
box-shadow 160ms var(--ease),
color 160ms var(--ease),
transform 160ms var(--ease);
}
.top-link:hover,
.lang-button:hover {
color: var(--trail-ink);
background: rgba(25, 200, 185, 0.12);
transform: translateY(-1px);
}
.top-link-strong {
color: #083d37;
background: var(--animal-primary);
border-color: #4de2da;
box-shadow: 0 3px 0 0 #0a9189;
}
.language-toggle {
display: inline-flex;
gap: 4px;
padding: 4px;
border: 2px solid rgba(159, 146, 125, 0.32);
border-radius: var(--radius-pill);
background: rgba(255, 250, 240, 0.86);
}
.lang-button {
min-height: 30px;
padding: 0 12px;
border: 0;
background: transparent;
cursor: pointer;
}
.lang-button.is-active {
color: var(--animal-text);
background: rgba(245, 195, 28, 0.26);
box-shadow: inset 0 -2px 0 rgba(219, 169, 14, 0.35);
}
.content-shell {
display: grid;
grid-template-columns: 230px minmax(0, 1fr);
gap: 28px;
align-items: start;
margin-top: 26px;
min-width: 0;
}
.sidebar {
position: sticky;
top: 94px;
max-height: calc(100vh - 112px);
overflow: auto;
padding: 18px;
border: 2px solid rgba(159, 146, 125, 0.42);
border-radius: var(--radius-lg);
background: rgba(255, 252, 244, 0.82);
box-shadow: 0 5px 0 0 rgba(212, 201, 180, 0.72);
min-width: 0;
}
.sidebar-label {
margin: 0 0 12px;
color: var(--animal-primary-active);
font-size: 0.78rem;
font-weight: 900;
letter-spacing: 0.02em;
text-transform: uppercase;
}
.side-nav {
display: grid;
gap: 8px;
}
.side-nav a,
.nav-group summary,
.side-device {
display: flex;
align-items: center;
justify-content: space-between;
gap: 10px;
width: 100%;
min-height: 40px;
padding: 0 13px;
border: 2px solid transparent;
border-radius: var(--radius-sm);
color: var(--animal-text-muted);
background: transparent;
font-weight: 900;
text-align: left;
cursor: pointer;
transition:
background-color 160ms var(--ease),
color 160ms var(--ease),
transform 160ms var(--ease);
}
.side-nav a::before,
.nav-group summary::before,
.side-device::before {
content: "";
flex: 0 0 22px;
width: 22px;
height: 22px;
background: url("./assets/animal-island/icons/icon-map.svg") center / contain no-repeat;
}
.side-nav a[href="#overview"]::before {
background-image: url("./assets/animal-island/icons/location.svg");
}
.side-nav a[href="#capabilities"]::before {
background-image: url("./assets/animal-island/icons/icon-design.svg");
}
.nav-group summary::before {
background-image: url("./assets/animal-island/icons/icon-helicopter.svg");
}
.side-device::before {
background-image: url("./assets/animal-island/icons/icon-camera.svg");
}
.side-nav a[href="#features"]::before {
background-image: url("./assets/animal-island/icons/icon-chat.svg");
}
.side-nav a[href="#languages"]::before {
background-image: url("./assets/animal-island/icons/icon-miles.svg");
}
.side-nav a[href="#webflasher"]::before {
background-image: url("./assets/animal-island/icons/icon-shopping.svg");
}
.side-nav a[href="#docs"]::before {
background-image: url("./assets/animal-island/icons/wifi.svg");
}
.side-nav a:hover,
.nav-group summary:hover,
.side-device:hover {
color: var(--trail-ink);
background: rgba(25, 200, 185, 0.12);
transform: translateY(-1px);
}
.side-nav a {
justify-content: flex-start;
}
.nav-group summary::after {
margin-left: auto;
}
.side-device span {
flex: 1;
min-width: 0;
}
.nav-group {
display: grid;
gap: 6px;
}
.nav-group summary {
list-style: none;
}
.nav-group summary::-webkit-details-marker {
display: none;
}
.nav-group summary::after {
content: "+";
color: var(--animal-primary-active);
}
.nav-group[open] summary::after {
content: "-";
}
.side-device {
display: flex;
align-items: center;
justify-content: flex-start;
gap: 10px;
min-height: 44px;
margin-top: 4px;
padding: 0 12px;
border-color: rgba(159, 146, 125, 0.2);
background: rgba(255, 250, 240, 0.62);
}
.side-device small {
flex: 0 1 auto;
min-width: 0;
color: var(--animal-text-secondary);
font-size: 0.72rem;
font-weight: 900;
line-height: 1.12;
text-align: left;
}
.side-device span {
overflow-wrap: anywhere;
}
.side-device.is-active,
.device-tab.is-active {
color: var(--animal-text);
background: rgba(245, 195, 28, 0.22);
border-color: rgba(219, 169, 14, 0.38);
box-shadow: 0 3px 0 0 rgba(219, 169, 14, 0.32);
}
.main-content {
min-width: 0;
}
.hero {
display: grid;
grid-template-columns: minmax(0, 1fr) minmax(340px, 0.86fr);
gap: 34px;
align-items: center;
padding: 28px 0 30px;
min-width: 0;
}
.hero-copy {
max-width: 680px;
min-width: 0;
}
.eyebrow,
.feature-kicker,
.board-chip {
margin: 0 0 10px;
color: var(--animal-primary-active);
font-size: 0.78rem;
font-weight: 900;
letter-spacing: 0.02em;
text-transform: uppercase;
}
h1,
h2,
h3,
p,
dd,
dt {
margin: 0;
}
h1 {
color: var(--animal-text);
font-size: 4.8rem;
font-weight: 900;
line-height: 0.94;
letter-spacing: 0;
text-shadow: 0 4px 0 rgba(189, 174, 160, 0.7);
}
.hero-tagline {
max-width: 14ch;
margin-top: 12px;
color: var(--trail-ink);
font-size: 2rem;
font-weight: 800;
line-height: 1.12;
}
.lede {
max-width: 60ch;
margin-top: 18px;
color: var(--animal-text-muted);
font-size: 1.05rem;
line-height: 1.72;
}
.hero-actions {
display: flex;
flex-wrap: wrap;
gap: 12px;
margin-top: 26px;
}
.button,
.flash-button {
display: inline-flex;
align-items: center;
justify-content: center;
min-height: 48px;
padding: 0 22px;
border: 2px solid transparent;
border-radius: var(--radius-lg);
font-weight: 900;
line-height: 1;
transition:
transform 160ms var(--ease),
box-shadow 160ms var(--ease),
background-color 160ms var(--ease),
border-color 160ms var(--ease);
}
.button:hover,
.flash-button:hover {
transform: translateY(-1px);
}
.button:active,
.flash-button:active {
transform: translateY(2px);
}
.button-primary,
.flash-button {
color: #083d37;
background: var(--animal-primary);
border-color: #4de2da;
box-shadow: 0 5px 0 0 #0a9189;
}
.button-primary:hover,
.flash-button:hover {
background: var(--animal-primary-hover);
}
.button-primary:active,
.flash-button:active {
box-shadow: 0 1px 0 0 #0a9189;
}
.button-secondary {
color: var(--animal-text);
background: var(--animal-bg);
border-color: var(--animal-border);
box-shadow: 0 5px 0 0 var(--animal-shadow-btn);
}
.button-secondary:hover {
border-color: var(--animal-border-hover);
box-shadow: 0 6px 0 0 var(--animal-shadow-btn);
}
.button-secondary:active {
box-shadow: 0 1px 0 0 var(--animal-shadow-btn);
}
.hero-visual,
.language-highlight,
.language-pack-card,
.capability-card,
.collapse-panel,
.board-card,
.shot,
.device-stage,
.links-section article {
transition:
transform 220ms var(--ease),
box-shadow 220ms var(--ease),
border-color 220ms var(--ease);
}
.hero-visual {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 14px;
padding: 18px;
border: 2px solid var(--animal-border);
border-radius: 32px;
background:
linear-gradient(180deg, rgba(255, 255, 255, 0.62), rgba(255, 248, 231, 0.9)),
var(--animal-bg-content);
box-shadow: 0 7px 0 0 rgba(189, 174, 160, 0.82);
}
.hero-screen {
grid-column: 1 / -1;
display: grid;
place-items: center;
aspect-ratio: 480 / 222;
min-height: 0;
padding: 12px;
overflow: hidden;
border: 2px solid rgba(159, 146, 125, 0.5);
border-radius: var(--radius-lg);
background: #2f4b4a;
box-shadow: inset 0 0 0 4px rgba(255, 250, 240, 0.08);
}
.hero-screen img,
.shot img,
.device-main-shot img,
.device-thumb img {
display: block;
width: 100%;
height: 100%;
object-fit: contain;
}
.hero-screen img {
border-radius: var(--radius-sm);
}
.hero-note {
min-height: 118px;
padding: 14px 16px;
border: 2px solid rgba(159, 146, 125, 0.42);
border-radius: var(--radius-md);
background: rgba(255, 252, 244, 0.86);
}
.hero-note-value {
color: var(--animal-text-body);
line-height: 1.45;
}
.overview-ribbon {
display: grid;
grid-template-columns: minmax(0, 1.18fr) minmax(0, 0.9fr);
gap: 20px;
align-items: center;
margin-top: 18px;
padding: 24px 28px;
border: 2px dashed rgba(159, 146, 125, 0.55);
border-radius: var(--radius-lg);
background: rgba(230, 249, 246, 0.72);
}
.overview-copy,
.story-lede,
.links-section p,
.section-note,
.board-copy,
.board-hint,
.support-note,
.workflow-note p,
.capability-card p,
.language-highlight p:last-child,
.language-pack-summary,
.device-summary,
.device-empty p,
.collapse-content p,
.site-footer-card p {
color: var(--animal-text-muted);
line-height: 1.7;
}
.overview-tags {
display: flex;
flex-wrap: wrap;
gap: 10px;
justify-content: flex-end;
}
.overview-tags span,
.language-pill,
.device-status-card,
.device-meta-chip {
display: inline-flex;
align-items: center;
min-height: 34px;
padding: 0 12px;
border: 2px solid rgba(159, 146, 125, 0.36);
border-radius: var(--radius-pill);
background: rgba(255, 250, 240, 0.86);
color: var(--animal-text);
font-size: 0.78rem;
font-weight: 900;
}
.overview-tags span:nth-child(3n + 1),
.language-pill:nth-child(3n + 1) {
background: rgba(25, 200, 185, 0.12);
}
.overview-tags span:nth-child(3n + 2),
.language-pill:nth-child(3n + 2) {
background: rgba(245, 195, 28, 0.18);
}
.overview-tags span:nth-child(3n + 3),
.language-pill:nth-child(3n + 3) {
background: rgba(124, 179, 66, 0.14);
}
.capability-section,
.device-section,
.language-section,
.install-section {
margin-top: 34px;
padding: 34px;
border: 2px solid rgba(159, 146, 125, 0.42);
border-radius: 34px;
background:
linear-gradient(180deg, rgba(255, 252, 244, 0.92), rgba(247, 243, 223, 0.86)),
var(--animal-bg-content);
}
.section-heading {
display: flex;
align-items: flex-end;
justify-content: space-between;
gap: 24px;
}
.section-heading h2,
.story-copy h2,
.capability-card h3,
.collapse-panel summary,
.links-section h2,
.install-section h2,
.site-footer-card h2 {
color: var(--animal-text);
font-weight: 900;
line-height: 1.08;
letter-spacing: 0;
}
.section-heading h2,
.story-copy h2,
.links-section h2,
.install-section h2,
.site-footer-card h2 {
font-size: 2.12rem;
}
.section-note {
max-width: 52ch;
}
.animal-divider {
width: min(760px, 82%);
height: 18px;
margin: 34px auto 0;
background: url("./assets/animal-island/dividers/divider-line-teal.svg") center / contain no-repeat;
}
.animal-divider-teal {
background-image: url("./assets/animal-island/dividers/divider-line-teal.svg");
}
.capability-grid {
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
gap: 14px;
margin-top: 24px;
}
.capability-card {
position: relative;
min-height: 210px;
padding: 24px 22px 22px;
border: 2px solid rgba(159, 146, 125, 0.42);
border-radius: var(--radius-md);
background: rgba(255, 252, 244, 0.86);
box-shadow: 0 4px 0 0 rgba(212, 201, 180, 0.8);
}
.capability-card::before {
content: "";
display: block;
width: 54px;
height: 54px;
margin-bottom: 12px;
background: url("./assets/animal-island/icons/icon-map.svg") center / contain no-repeat;
filter: drop-shadow(0 4px 0 rgba(189, 174, 160, 0.42));
transition: transform 220ms var(--ease);
}
.capability-card:hover::before {
transform: scale(1.08) rotate(-4deg);
}
.capability-device::before {
background-image: url("./assets/animal-island/icons/icon-helicopter.svg");
}
.capability-navigation::before {
background-image: url("./assets/animal-island/icons/icon-map.svg");
}
.capability-protocol::before {
background-image: url("./assets/animal-island/icons/icon-chat.svg");
}
.capability-install::before {
background-image: url("./assets/animal-island/icons/icon-shopping.svg");
}
.capability-locale::before {
background-image: url("./assets/animal-island/icons/icon-design.svg");
}
.capability-field::before {
background-image: url("./assets/animal-island/icons/icon-diy.svg");
}
.capability-card:nth-child(6n + 1),
.capability-card:nth-child(6n + 4) {
background: linear-gradient(180deg, rgba(230, 249, 246, 0.9), rgba(255, 252, 244, 0.94));
}
.capability-card:nth-child(6n + 2),
.capability-card:nth-child(6n + 5) {
background: linear-gradient(180deg, rgba(255, 248, 210, 0.92), rgba(255, 252, 244, 0.94));
}
.capability-card:nth-child(6n + 3),
.capability-card:nth-child(6n + 6) {
background: linear-gradient(180deg, rgba(232, 246, 218, 0.92), rgba(255, 252, 244, 0.94));
}
.capability-card:hover,
.collapse-panel:hover {
transform: translateY(-2px);
border-color: var(--animal-border-hover);
box-shadow: 0 6px 0 0 rgba(212, 201, 180, 0.9);
}
.capability-card h3 {
margin-bottom: 10px;
font-size: 1.32rem;
}
.device-browser {
overflow: hidden;
margin-top: 24px;
border: 2px solid var(--animal-border);
border-radius: var(--radius-lg);
background: var(--animal-bg);
}
.device-switcher {
display: flex;
flex-wrap: wrap;
gap: 4px;
padding: 16px;
border-bottom: 2px solid var(--animal-border);
background: rgba(255, 255, 255, 0.6);
}
.device-tab {
position: relative;
display: inline-flex;
align-items: center;
gap: 8px;
min-height: 44px;
padding: 8px 16px;
border: 0;
border-radius: var(--radius-lg);
background: transparent;
color: var(--animal-text);
cursor: pointer;
text-align: left;
transition:
background-color 160ms var(--ease),
border-color 160ms var(--ease),
box-shadow 160ms var(--ease),
color 160ms var(--ease),
transform 160ms var(--ease);
}
.device-tab:hover {
background: rgba(25, 200, 185, 0.12);
color: var(--animal-text);
}
.device-tab span {
position: relative;
z-index: 1;
font-weight: 700;
}
.device-tab small {
position: relative;
z-index: 1;
color: inherit;
font-size: 0.78rem;
font-weight: 800;
opacity: 0.72;
}
.device-tab::before {
content: "";
position: relative;
z-index: 1;
flex: 0 0 24px;
width: 24px;
height: 24px;
background: url("./assets/animal-island/icons/icon-camera.svg") center / contain no-repeat;
transition: transform 220ms var(--ease);
}
.device-tab[data-device-target="tlora-pager-sx1262"]::before {
background-image: url("./assets/animal-island/icons/icon-chat.svg");
}
.device-tab[data-device-target="tlora-pager-lr1121"]::before {
background-image: url("./assets/animal-island/icons/wifi.svg");
}
.device-tab[data-device-target="tdeck"]::before {
background-image: url("./assets/animal-island/icons/icon-map.svg");
}
.device-tab[data-device-target="lilygo-twatch-s3"]::before {
background-image: url("./assets/animal-island/icons/icon-miles.svg");
}
.device-tab[data-device-target="gat562-mesh-evb-pro"]::before {
background-image: url("./assets/animal-island/icons/wifi.svg");
}
.device-tab.is-active::before {
transform: scale(1.2);
}
.device-tab.is-active::after {
content: "";
position: absolute;
top: -8px;
right: -5px;
width: 18px;
height: 18px;
background: url("./assets/animal-island/icons/icon-leaf.png") center / contain no-repeat;
animation: leafWiggle 2s ease-in-out infinite;
}
.device-tab.is-active {
color: #fff9e3;
background: #0cc0b5;
border-color: transparent;
box-shadow: 0 3px 0 0 rgba(61, 52, 40, 0.08);
}
@keyframes leafWiggle {
0%,
100% {
transform: rotate(0deg);
}
25% {
transform: rotate(-10deg);
}
75% {
transform: rotate(10deg);
}
}
.device-stage {
min-width: 0;
padding: 24px;
border: 0;
border-radius: 0;
background: transparent;
box-shadow: none;
animation: fadeIn 0.25s ease;
}
@keyframes fadeIn {
from {
opacity: 0;
transform: translateY(4px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
.device-stage-header {
display: flex;
align-items: flex-start;
justify-content: space-between;
gap: 18px;
}
.device-stage-header h3 {
color: var(--animal-text);
font-size: 2rem;
font-weight: 900;
line-height: 1.06;
}
.device-summary {
max-width: 64ch;
margin-top: 10px;
}
.device-status-card {
min-width: max-content;
background: rgba(25, 200, 185, 0.12);
}
.device-showcase {
display: grid;
grid-template-columns: minmax(0, 1.45fr) minmax(240px, 0.55fr);
gap: 18px;
align-items: stretch;
margin-top: 18px;
}
.device-main-shot {
display: grid;
grid-template-rows: 1fr auto;
min-width: 0;
margin: 0;
overflow: hidden;
border: 2px solid rgba(159, 146, 125, 0.46);
border-radius: var(--radius-lg);
background: #2f4b4a;
}
.device-main-shot img {
aspect-ratio: 480 / 222;
min-height: 0;
padding: 14px;
}
.device-main-shot figcaption {
padding: 12px 14px;
border-top: 2px solid rgba(255, 250, 240, 0.16);
color: #fffaf0;
font-weight: 900;
}
.device-detail-panel {
padding: 18px;
border: 2px dashed rgba(159, 146, 125, 0.46);
border-radius: var(--radius-md);
background: rgba(230, 249, 246, 0.52);
}
.device-interactions {
display: grid;
gap: 12px;
margin: 0;
padding-left: 20px;
color: var(--trail-ink);
line-height: 1.58;
}
.device-interactions li::marker {
color: var(--animal-primary-active);
}
.device-thumb-grid {
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
gap: 12px;
margin-top: 14px;
}
.device-thumb {
display: grid;
gap: 8px;
min-width: 0;
padding: 8px;
border: 2px solid rgba(159, 146, 125, 0.32);
border-radius: var(--radius-md);
background: rgba(255, 250, 240, 0.82);
color: var(--animal-text-muted);
cursor: pointer;
text-align: left;
transition:
background-color 160ms var(--ease),
border-color 160ms var(--ease),
box-shadow 160ms var(--ease),
color 160ms var(--ease),
transform 160ms var(--ease);
}
.device-thumb:hover,
.device-thumb.is-active {
color: var(--animal-text);
border-color: rgba(25, 200, 185, 0.58);
background: rgba(230, 249, 246, 0.86);
transform: translateY(-1px);
}
.device-thumb.is-active {
box-shadow: 0 3px 0 0 rgba(17, 168, 155, 0.32);
}
.device-thumb img {
aspect-ratio: 480 / 222;
border-radius: 10px;
background: #f8f4e8;
}
.device-thumb span {
display: block;
padding: 0 4px 3px;
font-size: 0.86rem;
font-weight: 900;
}
.device-empty {
grid-column: 1 / -1;
padding: 22px;
border: 2px dashed rgba(159, 146, 125, 0.46);
border-radius: var(--radius-md);
background: rgba(255, 250, 240, 0.7);
}
.device-empty h4 {
margin: 0 0 8px;
color: var(--animal-text);
font-size: 1.15rem;
font-weight: 900;
}
.story-stack {
display: grid;
gap: 16px;
margin-top: 34px;
}
.story-section {
display: grid;
grid-template-columns: minmax(260px, 0.72fr) minmax(0, 1.28fr);
gap: 28px;
align-items: center;
padding: 34px 0;
border-top: 2px solid rgba(159, 146, 125, 0.28);
}
.story-lede {
margin-top: 12px;
}
.story-media {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 14px;
min-height: 0;
}
.shot {
display: grid;
place-items: center;
width: 100%;
aspect-ratio: 480 / 222;
min-width: 0;
margin: 0;
padding: 10px;
overflow: hidden;
border: 2px solid rgba(159, 146, 125, 0.46);
border-radius: var(--radius-md);
background:
linear-gradient(180deg, rgba(255, 255, 255, 0.55), rgba(255, 248, 231, 0.74)),
#f8f4e8;
box-shadow: 0 4px 0 0 rgba(212, 201, 180, 0.82);
}
.shot:hover {
transform: translateY(-2px);
border-color: var(--animal-border-hover);
box-shadow: 0 6px 0 0 rgba(212, 201, 180, 0.9);
}
.shot img {
border-radius: 10px;
background: #f8f4e8;
}
.language-highlights {
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
gap: 14px;
margin-top: 24px;
}
.language-highlight,
.language-pack-card,
.board-card {
padding: 22px;
border: 2px solid rgba(159, 146, 125, 0.42);
border-radius: var(--radius-md);
background: var(--surface);
box-shadow: 0 4px 0 0 rgba(212, 201, 180, 0.8);
}
.language-highlight:nth-child(4n + 1),
.language-pack-card:nth-child(4n + 1),
.board-card:nth-child(4n + 1) {
background: linear-gradient(180deg, rgba(230, 249, 246, 0.9), rgba(255, 252, 244, 0.94));
}
.language-highlight:nth-child(4n + 2),
.language-pack-card:nth-child(4n + 2),
.board-card:nth-child(4n + 2) {
background: linear-gradient(180deg, rgba(255, 248, 210, 0.92), rgba(255, 252, 244, 0.94));
}
.language-highlight:nth-child(4n + 3),
.language-pack-card:nth-child(4n + 3),
.board-card:nth-child(4n + 3) {
background: linear-gradient(180deg, rgba(232, 246, 218, 0.92), rgba(255, 252, 244, 0.94));
}
.language-highlight:hover,
.language-pack-card:hover,
.board-card:hover {
transform: translateY(-2px);
border-color: var(--animal-border-hover);
box-shadow: 0 6px 0 0 rgba(212, 201, 180, 0.9);
}
.language-highlight h3,
.language-pack-card h3,
.board-card h3 {
color: var(--animal-text);
font-size: 1.28rem;
font-weight: 900;
line-height: 1.18;
letter-spacing: 0;
}
.language-highlight p:last-child,
.language-pack-summary {
margin-top: 10px;
}
.language-pack-grid {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 18px;
margin-top: 18px;
}
.language-pack-meta,
.language-pack-locales,
.language-pack-profiles {
display: flex;
flex-wrap: wrap;
gap: 8px;
margin-top: 14px;
}
.language-pack-empty {
grid-column: 1 / -1;
}
.install-grid {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 18px;
margin-top: 24px;
}
.board-card h3 {
margin-bottom: 8px;
font-size: 1.42rem;
}
.board-copy {
min-height: 52px;
}
.board-install {
margin-top: 18px;
padding-top: 16px;
border-top: 2px dashed rgba(159, 146, 125, 0.38);
}
.board-card-muted {
background: linear-gradient(180deg, rgba(224, 90, 90, 0.1), rgba(255, 252, 244, 0.94));
}
.install-button-wrap {
display: flex;
flex-direction: column;
gap: 12px;
}
.flash-button {
appearance: none;
cursor: pointer;
}
.release-link {
display: inline-flex;
margin-top: 16px;
color: var(--animal-primary-active);
font-weight: 900;
}
.release-link:hover {
color: var(--trail-ink);
}
.workflow-note {
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
gap: 12px;
margin-top: 22px;
}
.workflow-note p {
padding: 14px 16px;
border: 2px dashed rgba(159, 146, 125, 0.38);
border-radius: var(--radius-md);
background: rgba(255, 252, 244, 0.76);
}
.collapse-list {
display: grid;
gap: 12px;
margin-top: 24px;
}
.collapse-panel {
overflow: hidden;
border: 2px solid var(--animal-border);
border-radius: var(--radius-md);
background: rgba(255, 252, 244, 0.82);
box-shadow: 0 3px 0 0 rgba(212, 201, 180, 0.8);
}
.collapse-panel summary {
display: flex;
align-items: center;
gap: 12px;
min-height: 64px;
padding: 16px 24px;
cursor: pointer;
list-style: none;
font-size: 1.02rem;
}
.collapse-panel summary::-webkit-details-marker {
display: none;
}
.collapse-icon {
display: inline-flex;
flex: 0 0 28px;
align-items: center;
justify-content: center;
width: 28px;
height: 28px;
border-radius: 50%;
background: var(--animal-primary);
color: #fff;
box-shadow: 0 2px 4px rgba(25, 200, 185, 0.3);
font-size: 1.1rem;
font-weight: 900;
transition: transform 220ms var(--ease);
}
.collapse-panel[open] .collapse-icon {
transform: rotate(45deg);
}
.collapse-content {
padding: 0 24px 24px 64px;
animation: fadeIn 0.25s ease;
}
.links-section {
margin-top: 28px;
}
.links-section article {
padding: 28px;
border: 2px solid rgba(159, 146, 125, 0.42);
border-radius: var(--radius-lg);
background: rgba(230, 249, 246, 0.62);
}
.links-section p {
max-width: 74ch;
margin-top: 10px;
}
dt {
margin-bottom: 6px;
color: var(--animal-text-muted);
font-size: 0.95rem;
}
dd {
font-size: 1.05rem;
line-height: 1.45;
}
.site-footer {
margin-top: 44px;
}
.site-footer-card {
display: flex;
align-items: flex-end;
justify-content: space-between;
gap: 24px;
padding: 28px;
border: 2px solid rgba(159, 146, 125, 0.42);
border-radius: var(--radius-lg);
background: rgba(255, 252, 244, 0.84);
box-shadow: 0 5px 0 0 rgba(212, 201, 180, 0.78);
}
.site-footer-card h2 {
max-width: 18ch;
}
.site-footer-card p:last-child {
max-width: 68ch;
margin-top: 12px;
}
.site-footer-links {
display: flex;
flex-wrap: wrap;
gap: 10px;
justify-content: flex-end;
}
.site-footer-links a {
display: inline-flex;
align-items: center;
min-height: 40px;
padding: 0 14px;
border: 2px solid rgba(159, 146, 125, 0.36);
border-radius: var(--radius-pill);
background: rgba(230, 249, 246, 0.74);
color: var(--animal-text);
font-weight: 900;
transition:
background-color 160ms var(--ease),
transform 160ms var(--ease);
}
.site-footer-links a:hover {
background: rgba(25, 200, 185, 0.16);
transform: translateY(-1px);
}
.animal-footer-art {
width: 100%;
height: 96px;
margin-top: 18px;
background: url("./assets/animal-island/footer/footer-tree.webp") bottom center / cover no-repeat;
border-radius: var(--radius-lg);
}
@media (max-width: 1120px) {
.content-shell {
grid-template-columns: 1fr;
}
.sidebar {
position: sticky;
top: 86px;
z-index: 12;
max-height: none;
overflow: visible;
}
.side-nav {
display: flex;
flex-wrap: wrap;
align-items: flex-start;
}
.side-nav > a,
.nav-group {
flex: 1 1 160px;
}
.nav-group {
min-width: 220px;
}
.side-device {
width: 100%;
margin-right: 0;
}
}
@media (max-width: 980px) {
.hero,
.overview-ribbon,
.device-browser,
.device-showcase,
.story-section,
.install-grid,
.workflow-note,
.capability-grid {
grid-template-columns: 1fr;
}
.overview-tags {
justify-content: flex-start;
}
.section-heading,
.device-stage-header {
align-items: flex-start;
flex-direction: column;
}
.hero-copy {
max-width: none;
}
.hero-tagline {
max-width: 20ch;
}
.device-switcher {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
.site-footer-card {
align-items: flex-start;
flex-direction: column;
}
.site-footer-links {
justify-content: flex-start;
}
}
@media (max-width: 760px) {
html,
body {
overflow-x: hidden;
}
.page-shell {
width: calc(100% - 24px);
padding-top: 12px;
}
.topbar {
align-items: stretch;
flex-direction: column;
}
.brand,
.top-actions {
justify-content: center;
}
.top-actions {
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
width: 100%;
}
.top-link {
width: 100%;
min-width: 0;
padding-inline: 10px;
}
.language-toggle {
display: grid;
grid-column: 1 / -1;
grid-template-columns: repeat(2, minmax(0, 1fr));
width: 100%;
}
.lang-button {
min-width: 0;
}
.sidebar {
position: static;
padding: 14px;
}
.side-nav {
display: grid;
overflow: visible;
padding-bottom: 0;
}
.side-nav > a,
.nav-group {
flex: initial;
min-width: 0;
}
.side-device {
width: 100%;
min-height: 40px;
padding-inline: 12px;
}
.hero {
padding-top: 24px;
}
h1 {
font-size: 3.2rem;
}
.hero-tagline {
max-width: none;
font-size: 1.55rem;
}
.hero-visual,
.capability-section,
.device-section,
.language-section,
.install-section,
.links-section article {
padding: 20px;
border-radius: var(--radius-lg);
}
.hero-visual,
.language-highlights,
.language-pack-grid,
.story-media,
.device-thumb-grid,
.device-switcher,
.capability-grid {
grid-template-columns: 1fr;
}
.device-switcher {
display: grid;
}
.hero-screen {
grid-column: auto;
}
.section-heading h2,
.story-copy h2,
.links-section h2,
.install-section h2 {
font-size: 1.65rem;
}
.device-stage-header h3 {
font-size: 1.65rem;
}
.collapse-panel summary {
padding: 14px 16px;
}
.collapse-content {
padding: 0 16px 18px 56px;
}
}
@media (max-width: 430px) {
.page-shell {
width: calc(100% - 18px);
}
.topbar,
.hero-visual,
.capability-section,
.device-section,
.language-section,
.install-section,
.links-section article,
.capability-card,
.language-highlight,
.language-pack-card,
.board-card,
.device-stage,
.site-footer-card {
padding: 16px;
}
h1 {
font-size: 2.72rem;
}
.hero-tagline {
font-size: 1.32rem;
}
.button,
.flash-button {
width: 100%;
}
.overview-ribbon {
padding: 18px;
}
.collapse-content {
padding-left: 16px;
}
.site-footer-links a {
flex: 1 1 100%;
justify-content: center;
}
}