/* =========================================================
   addrproxy.com — Flat-design with a playful soul
   Interaction: Interactive Hover Bubbles: When the user hovers over a timeline node
   Navy-metallic palette + Recursive variable font
   ========================================================= */

:root {
    --c-deep-navy:     #1a2a3d;
    --c-slate-blue:    #2b3a4e;
    --c-storm-steel:   #3d5168;
    --c-muted-steel:   #8fa3b8;
    --c-frost-white:   #e8edf3;
    --c-brushed-gold:  #c8a96e;
    --c-copper-warm:   #d4856a;
    --c-chrome-silver: #b8c6d4;

    --ease-bounce: cubic-bezier(0.34, 1.56, 0.64, 1);
    --ease-smooth: cubic-bezier(0.25, 0.1, 0.25, 1);
}

* { box-sizing: border-box; margin: 0; padding: 0; }

html, body {
    background: var(--c-deep-navy);
    color: var(--c-frost-white);
    font-family: 'Recursive', Inter, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    font-variation-settings: 'MONO' 0, 'CASL' 0, 'wght' 400, 'slnt' 0, 'CRSV' 0;
    line-height: 1.65;
    overflow-x: hidden;
    scroll-behavior: smooth;
}

body {
    scroll-snap-type: y proximity;
}

/* =========================================================
   Floating background bubbles
   ========================================================= */
.bg-bubbles {
    position: fixed;
    inset: 0;
    pointer-events: none;
    z-index: 0;
    overflow: hidden;
}
.bubble {
    position: absolute;
    bottom: -120px;
    border-radius: 50%;
    background: var(--c-slate-blue);
    opacity: 0.45;
    animation: float-up 22s linear infinite;
}
@keyframes float-up {
    from { transform: translateY(0); opacity: 0; }
    10%  { opacity: 0.45; }
    90%  { opacity: 0.45; }
    to   { transform: translateY(-110vh); opacity: 0; }
}
.b1  { left: 4%;  width: 28px; height: 28px; animation-duration: 22s; animation-delay: 0s;  opacity: 0.4; }
.b2  { left: 12%; width: 48px; height: 48px; animation-duration: 28s; animation-delay: -5s; opacity: 0.35; }
.b3  { left: 19%; width: 20px; height: 20px; animation-duration: 18s; animation-delay: -2s; opacity: 0.55; }
.b4  { left: 26%; width: 64px; height: 64px; animation-duration: 30s; animation-delay: -8s; opacity: 0.3; }
.b5  { left: 33%; width: 24px; height: 24px; animation-duration: 20s; animation-delay: -1s; opacity: 0.5; }
.b6  { left: 41%; width: 36px; height: 36px; animation-duration: 25s; animation-delay: -11s; opacity: 0.4; }
.b7  { left: 49%; width: 80px; height: 80px; animation-duration: 34s; animation-delay: -3s; opacity: 0.28; }
.b8  { left: 57%; width: 22px; height: 22px; animation-duration: 19s; animation-delay: -6s; opacity: 0.5; }
.b9  { left: 64%; width: 52px; height: 52px; animation-duration: 26s; animation-delay: -9s; opacity: 0.34; }
.b10 { left: 71%; width: 30px; height: 30px; animation-duration: 21s; animation-delay: -4s; opacity: 0.46; }
.b11 { left: 78%; width: 40px; height: 40px; animation-duration: 24s; animation-delay: -12s; opacity: 0.4; }
.b12 { left: 85%; width: 22px; height: 22px; animation-duration: 17s; animation-delay: -2.5s; opacity: 0.5; }
.b13 { left: 91%; width: 68px; height: 68px; animation-duration: 32s; animation-delay: -7s; opacity: 0.3; }
.b14 { left: 47%; width: 18px; height: 18px; animation-duration: 16s; animation-delay: -10s; opacity: 0.55; }
.b15 { left: 30%; width: 54px; height: 54px; animation-duration: 29s; animation-delay: -14s; opacity: 0.32; }

/* =========================================================
   GATEWAY / HERO
   ========================================================= */
.gateway {
    min-height: 100vh;
    background: var(--c-deep-navy);
    display: flex;
    align-items: center;
    justify-content: center;
    position: relative;
    overflow: hidden;
    scroll-snap-align: start;
    isolation: isolate;
}

.network-map {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    z-index: 1;
}

.net-node {
    transform-origin: center;
    transform-box: fill-box;
    animation: node-wobble 6s ease-in-out infinite;
}
.net-node:nth-child(10) { animation-delay: -1s; }
.net-node:nth-child(11) { animation-delay: -2s; }
.net-node:nth-child(12) { animation-delay: -3s; }
.net-node:nth-child(13) { animation-delay: -4s; }
.net-node:nth-child(14) { animation-delay: -5s; }
.center-node {
    animation: center-pulse 3s ease-in-out infinite;
}
@keyframes node-wobble {
    0%, 100% { transform: translate(0, 0); }
    25%      { transform: translate(3px, -4px); }
    50%      { transform: translate(-2px, 4px); }
    75%      { transform: translate(4px, 2px); }
}
@keyframes center-pulse {
    0%, 100% { stroke-width: 3; opacity: 1; }
    50%      { stroke-width: 5; opacity: 0.85; }
}

.gateway-brand {
    position: relative;
    z-index: 2;
    text-align: center;
    padding: 2rem;
    max-width: 900px;
}

.brand-tag {
    display: inline-block;
    font-variation-settings: 'MONO' 1, 'CASL' 0, 'wght' 500, 'slnt' 0, 'CRSV' 0;
    font-size: 0.8125rem;
    letter-spacing: 0.28em;
    color: var(--c-brushed-gold);
    padding: 0.5rem 1rem;
    border: 2px solid var(--c-brushed-gold);
    margin-bottom: 2rem;
}

.brand-name {
    font-variation-settings: 'MONO' 0, 'CASL' 0.8, 'wght' 900, 'slnt' 0, 'CRSV' 0;
    font-size: clamp(3rem, 7vw, 6rem);
    color: var(--c-frost-white);
    letter-spacing: -0.03em;
    line-height: 1;
    margin-bottom: 1.25rem;
}

.brand-tagline {
    font-variation-settings: 'MONO' 0, 'CASL' 0, 'wght' 300, 'slnt' 0, 'CRSV' 0;
    color: var(--c-muted-steel);
    font-size: clamp(1rem, 1.6vw, 1.35rem);
    letter-spacing: 0.01em;
}

.scroll-hint {
    margin-top: 4rem;
    display: inline-flex;
    flex-direction: column;
    align-items: center;
    gap: 0.5rem;
}
.hint-label {
    font-variation-settings: 'MONO' 0, 'CASL' 1, 'wght' 700, 'slnt' -8, 'CRSV' 1;
    font-size: 1rem;
    color: var(--c-chrome-silver);
}
.hint-arrow {
    display: inline-block;
    color: var(--c-brushed-gold);
    font-size: 1.5rem;
    animation: arrow-bob 2s ease-in-out infinite;
}
@keyframes arrow-bob {
    0%, 100% { transform: translateY(0); }
    50%      { transform: translateY(8px); }
}

/* =========================================================
   Interstitial bars
   ========================================================= */
.interstitial {
    position: relative;
    background: var(--c-slate-blue);
    border-top: 2px solid var(--c-storm-steel);
    border-bottom: 2px solid var(--c-storm-steel);
    padding: 14px 24px;
    text-align: center;
    overflow: hidden;
    z-index: 2;
}
.interstitial.mini {
    background: var(--c-deep-navy);
    border-top: 2px solid var(--c-slate-blue);
    border-bottom: 2px solid var(--c-slate-blue);
}
.interstitial-text {
    font-variation-settings: 'MONO' 0, 'CASL' 1, 'wght' 700, 'slnt' -8, 'CRSV' 1;
    color: var(--c-brushed-gold);
    font-size: 1.125rem;
    letter-spacing: 0.01em;
}

/* =========================================================
   JOURNEY / TIMELINE
   ========================================================= */
.journey {
    position: relative;
    padding: 5rem 1.5rem 3rem;
    background: var(--c-deep-navy);
    z-index: 2;
}
.journey-header {
    max-width: 720px;
    margin: 0 auto 4rem;
    text-align: center;
}
.section-title {
    font-variation-settings: 'MONO' 0, 'CASL' 0.8, 'wght' 900, 'slnt' 0, 'CRSV' 0;
    font-size: clamp(1.8rem, 3.5vw, 2.6rem);
    color: var(--c-frost-white);
    letter-spacing: -0.02em;
    margin-bottom: 1rem;
}
.section-sub {
    color: var(--c-muted-steel);
    font-size: 1.0625rem;
}

.timeline-wrap {
    max-width: 960px;
    margin: 0 auto;
    position: relative;
    padding: 2rem 0 4rem;
}

.spine {
    position: absolute;
    left: 50%;
    top: 0;
    bottom: 0;
    width: 4px;
    background: var(--c-slate-blue);
    transform: translateX(-50%);
    box-shadow: 0 0 12px rgba(110, 142, 181, 0.3);
    z-index: 1;
}
.spine-fill {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 0%;
    background: var(--c-brushed-gold);
    transition: height 0.1s linear;
    box-shadow: 0 0 16px rgba(200, 169, 110, 0.45);
}

.tl-node {
    display: grid;
    grid-template-columns: 1fr 64px 1fr;
    align-items: start;
    margin-bottom: 6rem;
    position: relative;
    scroll-snap-align: start;
}

.tl-content {
    background: var(--c-frost-white);
    border: 2px solid var(--c-storm-steel);
    padding: 2rem 1.75rem;
    color: var(--c-storm-steel);
    position: relative;
    opacity: 0;
    transform: translateY(24px);
    transition: opacity 0.6s var(--ease-smooth), transform 0.6s var(--ease-bounce);
}
.tl-node.visible .tl-content {
    opacity: 1;
    transform: translateY(0);
}

.tl-left .tl-content {
    grid-column: 1;
    margin-right: 0;
}
.tl-right .tl-content {
    grid-column: 3;
    margin-left: 0;
}

/* connector arm */
.tl-left .tl-content::after,
.tl-right .tl-content::after {
    content: "";
    position: absolute;
    top: 40px;
    height: 2px;
    background: var(--c-storm-steel);
    width: 32px;
}
.tl-left .tl-content::after  { right: -32px; }
.tl-right .tl-content::after { left: -32px; }

.node-meta {
    display: inline-block;
    font-variation-settings: 'MONO' 1, 'CASL' 0, 'wght' 500, 'slnt' 0, 'CRSV' 0;
    color: var(--c-brushed-gold);
    font-size: 0.8125rem;
    letter-spacing: 0.12em;
    margin-bottom: 0.75rem;
    padding-bottom: 0.5rem;
    border-bottom: 2px solid var(--c-storm-steel);
}
.node-title {
    font-variation-settings: 'MONO' 0, 'CASL' 0.8, 'wght' 900, 'slnt' 0, 'CRSV' 0;
    color: var(--c-deep-navy);
    font-size: clamp(1.4rem, 2.4vw, 1.9rem);
    letter-spacing: -0.02em;
    margin-bottom: 0.75rem;
    line-height: 1.15;
}
.node-body {
    color: var(--c-storm-steel);
    font-size: 1rem;
    margin-bottom: 1.25rem;
}
.node-caption {
    display: inline-block;
    font-variation-settings: 'MONO' 1, 'CASL' 0, 'wght' 500, 'slnt' 0, 'CRSV' 0;
    color: var(--c-brushed-gold);
    font-size: 0.75rem;
    letter-spacing: 0.12em;
    padding: 0.4rem 0.7rem;
    border: 2px solid var(--c-brushed-gold);
    background: var(--c-deep-navy);
}

/* Bubble stop on spine */
.tl-bubble {
    grid-column: 2;
    justify-self: center;
    align-self: start;
    margin-top: 28px;
    width: 32px;
    height: 32px;
    border-radius: 50%;
    background: var(--c-deep-navy);
    border: 2px solid var(--c-brushed-gold);
    position: relative;
    z-index: 4;
    transform: scale(0);
    transition: transform 0.5s var(--ease-bounce);
    display: flex;
    align-items: center;
    justify-content: center;
}
.tl-node.visible .tl-bubble { transform: scale(1); }

.bubble-label {
    font-variation-settings: 'MONO' 1, 'CASL' 0, 'wght' 600, 'slnt' 0, 'CRSV' 0;
    color: var(--c-brushed-gold);
    font-size: 0.6875rem;
    letter-spacing: 0.05em;
}

.tl-bubble::before {
    /* pulse ring when in view */
    content: "";
    position: absolute;
    inset: -6px;
    border-radius: 50%;
    border: 2px solid var(--c-brushed-gold);
    opacity: 0;
    animation: bubble-pulse 2.2s ease-out infinite;
}
.tl-node.visible .tl-bubble::before { opacity: 1; }
@keyframes bubble-pulse {
    0%   { transform: scale(1);    opacity: 0.7; }
    100% { transform: scale(1.8);  opacity: 0; }
}

/* hover fizz bubbles */
.tl-node .tl-content::before {
    content: "";
    position: absolute;
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: var(--c-brushed-gold);
    opacity: 0;
    top: 20px;
    pointer-events: none;
}
.tl-left  .tl-content::before { right: -4px; }
.tl-right .tl-content::before { left:  -4px; }
.tl-node.visible:hover .tl-content::before {
    animation: fizz 1s ease-out infinite;
}
@keyframes fizz {
    0%   { transform: translate(0, 0) scale(1);   opacity: 0.9; }
    100% { transform: translate(0, -40px) scale(0.3); opacity: 0; }
}

/* Pictogram grid (tiny houses via CSS) */
.pictogram-grid {
    display: grid;
    grid-template-columns: repeat(12, 1fr);
    gap: 6px;
    margin: 0 0 1rem;
    padding: 0.75rem;
    background: var(--c-chrome-silver);
    border: 2px solid var(--c-storm-steel);
}
.pictogram-grid::before {
    content: "";
    grid-column: 1 / -1;
    height: 0;
}
.pictogram-grid {
    --house-count: 24;
}
.pictogram-grid {
    position: relative;
}
.pictogram-grid::after {
    content: "";
    grid-column: 1 / -1;
    display: grid;
    grid-template-columns: repeat(12, 1fr);
    gap: 6px;
}
/* Use inline SVG via background for each cell */
.pictogram-grid {
    background-image:
        linear-gradient(var(--c-chrome-silver), var(--c-chrome-silver));
}
.pictogram-grid > .house,
.pictogram-grid .house {
    width: 14px;
    height: 14px;
    background:
        linear-gradient(transparent, transparent);
}
/* Render houses via generated children from JS-less approach: use pseudo rows */
.pictogram-grid {
    /* Simple visual: alternating filled/outline house shapes using SVG in background */
    background-image:
        url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'><path d='M10 2 L18 9 L18 18 L2 18 L2 9 Z' fill='%231a2a3d' stroke='%233d5168' stroke-width='1.2'/></svg>"),
        url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'><path d='M10 2 L18 9 L18 18 L2 18 L2 9 Z' fill='none' stroke='%233d5168' stroke-width='1.2'/></svg>");
    background-repeat: repeat;
    background-size: 22px 22px, 22px 22px;
    background-position: 0 0, 11px 11px;
    height: 90px;
}

.sankey {
    width: 100%;
    height: auto;
    display: block;
    margin: 0.25rem 0 1rem;
    background: var(--c-deep-navy);
    border: 2px solid var(--c-storm-steel);
    padding: 6px;
}

.mini-network {
    width: 100%;
    height: auto;
    display: block;
    margin: 0.25rem 0 1rem;
    background: var(--c-deep-navy);
    border: 2px solid var(--c-storm-steel);
    padding: 6px;
}

/* Blocked-route demo */
.blocked-demo {
    display: flex;
    gap: 14px;
    padding: 1rem;
    background: var(--c-deep-navy);
    border: 2px solid var(--c-storm-steel);
    margin: 0 0 1rem;
    justify-content: center;
}
.blocked-dot {
    width: 28px;
    height: 28px;
    border-radius: 50%;
    border: 2px solid var(--c-storm-steel);
    background: var(--c-chrome-silver);
    cursor: pointer;
    transition: filter 0.2s var(--ease-smooth), border-color 0.2s var(--ease-smooth);
}
.blocked-dot.ok:hover {
    filter: brightness(1.15);
    border-color: var(--c-brushed-gold);
}
.blocked-dot[data-blocked="true"] {
    background: var(--c-copper-warm);
    border-color: var(--c-copper-warm);
}
.blocked-dot.shaking {
    animation: shake 0.5s var(--ease-smooth);
    border-color: var(--c-copper-warm) !important;
}
@keyframes shake {
    0%, 100% { transform: translateX(0); }
    10%, 30%, 50%, 70%, 90% { transform: translateX(-4px); }
    20%, 40%, 60%, 80%      { transform: translateX(4px); }
}

/* Shield counter (pictogram of shields) */
.shield-counter {
    background-color: var(--c-deep-navy);
    background-image:
        url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'><path d='M10 2 L17 5 L17 11 C17 15 14 18 10 19 C6 18 3 15 3 11 L3 5 Z' fill='%23c8a96e' stroke='%23c8a96e' stroke-width='1'/></svg>"),
        url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'><path d='M10 2 L17 5 L17 11 C17 15 14 18 10 19 C6 18 3 15 3 11 L3 5 Z' fill='none' stroke='%238fa3b8' stroke-width='1.2'/></svg>");
    background-size: 22px 22px, 22px 22px;
    background-position: 0 0, 11px 11px;
    background-repeat: repeat;
    border: 2px solid var(--c-storm-steel);
    height: 80px;
    margin: 0 0 1rem;
}

/* Log list */
.log-list {
    list-style: none;
    background: var(--c-deep-navy);
    border: 2px solid var(--c-storm-steel);
    padding: 0.75rem 1rem;
    margin: 0 0 1rem;
}
.log-list li {
    display: flex;
    gap: 1rem;
    padding: 0.25rem 0;
    font-variation-settings: 'MONO' 1, 'CASL' 0, 'wght' 500, 'slnt' 0, 'CRSV' 0;
    font-size: 0.8125rem;
    letter-spacing: 0.04em;
    border-bottom: 1px dashed var(--c-storm-steel);
}
.log-list li:last-child { border-bottom: none; }
.log-ts  { color: var(--c-chrome-silver); min-width: 80px; }
.log-evt { color: var(--c-brushed-gold); }

/* =========================================================
   TERMINUS
   ========================================================= */
.terminus {
    background: var(--c-deep-navy);
    padding: 5rem 1.5rem 6rem;
    text-align: center;
    position: relative;
    border-top: 2px solid var(--c-slate-blue);
    z-index: 2;
    scroll-snap-align: start;
}

.terminus-bubble {
    width: 160px;
    height: 160px;
    margin: 0 auto 2.5rem;
    border-radius: 50%;
    background: var(--c-deep-navy);
    border: 3px solid var(--c-brushed-gold);
    display: flex;
    align-items: center;
    justify-content: center;
    position: relative;
    box-shadow: 0 0 30px rgba(200, 169, 110, 0.18);
}
.shield-svg {
    width: 86px;
    height: 86px;
}
.shield-check {
    stroke-dasharray: 80;
    stroke-dashoffset: 80;
    animation: check-draw 2s var(--ease-bounce) 0.3s forwards;
}
@keyframes check-draw {
    to { stroke-dashoffset: 0; }
}
.shield-pulse {
    transform-origin: center;
    animation: shield-ripple 3s ease-out infinite;
}
@keyframes shield-ripple {
    0%   { transform: scale(0.4); opacity: 0.7; }
    100% { transform: scale(1.4); opacity: 0;  }
}

.terminus-title {
    font-variation-settings: 'MONO' 0, 'CASL' 0.8, 'wght' 900, 'slnt' 0, 'CRSV' 0;
    color: var(--c-frost-white);
    font-size: clamp(1.8rem, 4vw, 2.8rem);
    letter-spacing: -0.02em;
    margin-bottom: 0.75rem;
}
.terminus-sub {
    color: var(--c-muted-steel);
    font-size: 1.0625rem;
    max-width: 540px;
    margin: 0 auto 2.5rem;
}

.cluster {
    display: inline-flex;
    gap: -6px;
    align-items: center;
    justify-content: center;
    position: relative;
    height: 40px;
}
.cluster-dot {
    display: inline-block;
    border-radius: 50%;
    background: var(--c-chrome-silver);
    border: 2px solid var(--c-storm-steel);
    margin-left: -8px;
}
.cluster-dot:first-child { margin-left: 0; }
.c1 { width: 16px; height: 16px; }
.c2 { width: 26px; height: 26px; background: var(--c-brushed-gold); border-color: var(--c-brushed-gold); }
.c3 { width: 20px; height: 20px; }
.c4 { width: 30px; height: 30px; background: var(--c-slate-blue); border-color: var(--c-storm-steel); }
.c5 { width: 14px; height: 14px; background: var(--c-copper-warm); border-color: var(--c-copper-warm); }

/* =========================================================
   FOOTER
   ========================================================= */
.footer {
    background-color: var(--c-deep-navy);
    background-image:
        url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 40 40'><circle cx='10' cy='10' r='4' fill='none' stroke='%232b3a4e' stroke-width='1.5'/><circle cx='30' cy='30' r='6' fill='none' stroke='%232b3a4e' stroke-width='1.5'/><circle cx='32' cy='8' r='2.5' fill='%232b3a4e'/></svg>");
    background-size: 80px 80px;
    background-repeat: repeat;
    border-top: 2px solid var(--c-slate-blue);
    padding: 2.5rem 1.5rem;
    color: var(--c-muted-steel);
    position: relative;
    z-index: 2;
}
.footer-inner {
    max-width: 960px;
    margin: 0 auto;
    display: grid;
    grid-template-columns: auto 1fr auto;
    align-items: center;
    gap: 1.5rem;
}
.footer-brand {
    display: inline-flex;
    align-items: center;
    gap: 0.6rem;
    color: var(--c-frost-white);
    font-variation-settings: 'MONO' 0, 'CASL' 0.8, 'wght' 800, 'slnt' 0, 'CRSV' 0;
    font-size: 1.2rem;
    letter-spacing: -0.02em;
}
.f-mark { color: var(--c-brushed-gold); }

.footer-links {
    display: flex;
    gap: 1.25rem;
    justify-content: center;
    flex-wrap: wrap;
}
.footer-links a {
    color: var(--c-chrome-silver);
    text-decoration: none;
    font-variation-settings: 'MONO' 1, 'CASL' 0, 'wght' 500, 'slnt' 0, 'CRSV' 0;
    font-size: 0.8125rem;
    letter-spacing: 0.12em;
    padding: 0.5rem 0.75rem;
    border: 2px solid var(--c-slate-blue);
    transition: border-color 0.2s var(--ease-smooth), color 0.2s var(--ease-smooth);
}
.footer-links a:hover {
    border-color: var(--c-brushed-gold);
    color: var(--c-brushed-gold);
}
.footer-note {
    font-variation-settings: 'MONO' 1, 'CASL' 0, 'wght' 400, 'slnt' 0, 'CRSV' 0;
    font-size: 0.75rem;
    letter-spacing: 0.1em;
    color: var(--c-muted-steel);
    text-align: right;
}

/* =========================================================
   RESPONSIVE
   ========================================================= */
@media (max-width: 768px) {
    .timeline-wrap {
        padding-left: 48px;
    }
    .spine {
        left: 20px;
        transform: none;
    }
    .tl-node {
        grid-template-columns: 0 32px 1fr;
        margin-bottom: 4rem;
    }
    .tl-left .tl-content,
    .tl-right .tl-content {
        grid-column: 3;
    }
    .tl-left .tl-content::after,
    .tl-right .tl-content::after {
        left: -16px;
        right: auto;
        width: 16px;
    }
    .tl-bubble {
        grid-column: 2;
        justify-self: start;
        margin-left: -14px;
    }
    .gateway-brand { padding: 1.25rem; }
    .footer-inner {
        grid-template-columns: 1fr;
        text-align: center;
    }
    .footer-note { text-align: center; }
    .pictogram-grid { height: 66px; }
}

@media (max-width: 480px) {
    .brand-name { font-size: clamp(2.5rem, 14vw, 4rem); }
    .tl-content { padding: 1.5rem 1.25rem; }
    .log-list li { font-size: 0.75rem; }
}

/* Prevent animation when reduced motion requested */
@media (prefers-reduced-motion: reduce) {
    * { animation-duration: 0.001s !important; animation-iteration-count: 1 !important; transition-duration: 0.001s !important; }
}
