/* Celoplošná mapa: střed je čitelný prostor, projekty mají vlastní kruhové světy. */
body.homepage{background:var(--paper)}
.homepage .topbar{position:absolute;right:24px;top:14px;min-height:0;padding:0;border:0;z-index:4}
.homepage .topbar .brand,.homepage .topbar #top-nav{display:none}
.homepage .topbar .controls button{font-size:10px;height:32px;width:32px;min-width:32px;background:var(--paper)}
.homepage .topbar .controls #theme{width:auto;padding:0 9px}
.homepage main{max-width:1600px;overflow:hidden}
.homepage .atmosphere .orb{opacity:.08}
.constellation{position:relative;height:max(760px,calc(100svh - 20px));max-height:1050px;isolation:isolate;--drift-x:0px;--drift-y:0px;--light-x:50%;--light-y:40%;background:radial-gradient(ellipse at var(--light-x) var(--light-y),#d9b77a14,transparent 45%)}
.constellation:before,.constellation:after{content:'';position:absolute;z-index:-1;pointer-events:none;border:1px solid var(--line);border-radius:50%;opacity:.28;transform:rotate(-33deg);width:90%;height:65%;left:8%;top:18%}
.constellation:after{border-color:var(--gold);transform:rotate(24deg);width:110%;left:-7%;height:89%;top:6%;opacity:.16}
.constellation-wires{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;transform:translate(var(--drift-x),var(--drift-y));transition:transform .6s ease-out}
.map-filaments{fill:none;stroke:url(#wire);stroke-width:1.6;opacity:.65}
.map-filaments path:nth-child(2){stroke:var(--rust);stroke-width:.65;opacity:.6}.map-filaments path:nth-child(3){stroke:var(--blue);stroke-width:.8;opacity:.55}.map-filaments path:nth-child(4){stroke:var(--gold);stroke-width:.7}.map-filaments path:nth-child(5){stroke:var(--green);stroke-width:.7}
.map-orbit{fill:none;stroke:var(--gold);stroke-width:.8;opacity:.25}
.map-satellites{fill:var(--gold);opacity:.6}.map-satellites circle:nth-child(3n){fill:var(--rust)}.map-satellites circle:nth-child(3n + 1){fill:var(--blue)}
.map-top{position:absolute;left:11%;right:10%;top:9%;display:flex;align-items:center;justify-content:space-between}
.map-top-link{display:flex;flex-direction:column;gap:7px;align-items:center;font-size:13px;text-align:center;white-space:nowrap}
.map-top-link>span:last-child{background:var(--paper);padding:6px 3px}
.map-top-link.active>span:last-child:after{content:'';display:block;height:2px;width:26px;background:var(--gold);position:absolute;bottom:0;left:calc(50% - 13px)}
.pigment-dot{display:block;width:38px;height:38px;border-radius:50%;background:radial-gradient(circle at 33% 27%,#fff6,transparent 50%),var(--pigment);box-shadow:inset -4px -4px 12px #0002,0 0 0 5px var(--paper);border:1px solid var(--pigment)}
.map-heart{position:absolute;left:49%;top:43%;width:54%;max-width:720px;transform:translate(-50%,-50%);text-align:center;z-index:2}
.map-kicker{font-size:10px;letter-spacing:2.2px;text-transform:uppercase;color:var(--muted);margin-bottom:18px}
.map-heart h1{font-family:Arial,Helvetica,sans-serif;font-weight:400;font-size:clamp(55px,6.5vw,99px);letter-spacing:5px;line-height:1.15;margin:0 0 25px}
.map-heart h1 span{display:block;font-size:clamp(15px,1.625vw,24px);letter-spacing:13px;margin:12px 0 0;padding-left:13px}
.map-intro{font-size:14px;line-height:1.8;color:var(--ink);margin:0 auto 22px;max-width:430px}
.map-actions{display:flex;justify-content:center;align-items:center;gap:12px}
.map-actions .cta{font-size:12px;min-height:44px;margin:0;padding:12px 22px;gap:15px}
.map-description{font-size:11px;color:var(--muted);margin:22px 0 0;min-height:20px;letter-spacing:.2px}
.map-star{position:absolute;left:32%;top:28%;width:clamp(82px,9vw,135px);height:clamp(94px,10.4vw,157px);transform:translate(-50%,-50%);z-index:1;filter:drop-shadow(0 0 9px #e7bd7440);pointer-events:none;animation:star-pulse 8s ease-in-out infinite}
.map-star svg{width:100%;height:100%}
.map-projects{position:absolute;inset:0;pointer-events:none}
.map-projects .map-project{pointer-events:auto}
.map-top{z-index:4}
.map-top{left:0;right:0;display:block}.map-top-link{position:absolute;left:var(--top-x);transform:translate(-50%,-19px)}
.map-project{position:absolute;left:var(--x);top:var(--y);transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:center;text-align:center;gap:10px;z-index:3;color:var(--ink);width:max-content;max-width:170px;border-radius:50%;outline-offset:7px!important}
.project-world{position:relative;display:block;width:var(--size);height:var(--size);border-radius:50%;border:1px solid var(--pigment);outline:4px solid var(--paper);background:radial-gradient(ellipse at 65% 28%,#eee0b055,transparent 57%),radial-gradient(ellipse at 18% 85%,#203847aa,transparent 66%),var(--pigment);box-shadow:inset 0 0 30px #0003,0 5px 22px #0000000b;color:#fff4d8;transition:transform .45s,box-shadow .45s}
.project-world:before{content:'';position:absolute;inset:-7px;border:1px solid var(--pigment);border-radius:50%;opacity:.48}
.project-world:after{content:'';position:absolute;inset:7px;border-radius:50%;border:1px solid #ffffff30;pointer-events:none}
.project-world svg{width:100%;height:100%;animation:world-drift 12s ease-in-out infinite;animation-delay:var(--delay)}
@media(min-width:1051px){.project-world{width:calc(var(--size)*1.18);height:calc(var(--size)*1.18)}.map-project-small .project-world{width:var(--size);height:var(--size)}}
.symbol-lines{fill:none;stroke:currentColor;stroke-width:1.3;stroke-linecap:round;stroke-linejoin:round;opacity:.85}
.world-elipsy{background:radial-gradient(circle at 70% 24%,#d5c994,transparent 60%),radial-gradient(circle at 35% 85%,#273e41,transparent 60%),#6b7962}
.world-ai{background:radial-gradient(circle at 30% 30%,#76929e,transparent 60%),#273f53}
.world-osakar{background:radial-gradient(circle at 70% 30%,#dca773,transparent 70%),#79482d}
.world-studio{background:radial-gradient(ellipse at 62% 34%,#e8ce8766,transparent 40%),radial-gradient(ellipse at 32% 72%,#4c688e,transparent 60%),#233544}
.world-growing{background:radial-gradient(circle at 32% 25%,#b3b68a,transparent 70%),#465a47}
.world-blog{background:radial-gradient(circle at 65% 35%,#c6d0bc,transparent 60%),#3d626c}
.project-world-name{font-size:12px;line-height:1.4;padding:3px 7px;background:var(--paper);max-width:170px;border-radius:12px}
.project-world-hint{position:absolute;top:calc(100% + 5px);font-size:10px;line-height:1.5;background:var(--surface);border:1px solid var(--line);padding:8px 10px;border-radius:7px;width:170px;pointer-events:none;opacity:0;transform:translateY(5px);transition:.25s}
.map-project:hover,.map-project:focus-visible{z-index:5}
.map-project:hover .project-world,.map-project:focus-visible .project-world{transform:scale(1.075);box-shadow:inset 0 0 30px #0001,0 0 0 9px var(--paper),0 0 0 10px var(--pigment),0 10px 35px #0002}
.map-project:hover .project-world-hint,.map-project:focus-visible .project-world-hint{opacity:1;transform:translateY(0)}
.map-project-small{flex-direction:row;gap:10px;max-width:210px;transform:translate(-16px,-50%)}
.map-project-small .project-world:before{inset:-5px}
.map-project-small .project-world-hint{top:calc(100% + 10px)}
.map-project-small[data-project=archive]{flex-direction:row-reverse;transform:translate(calc(-100% + 16px),-50%)}
.map-profile{position:absolute;right:17%;bottom:3%;height:38%;width:auto;aspect-ratio:320/345;object-fit:contain;max-width:330px;pointer-events:none;transform:translate(calc(var(--drift-x)*-.7),calc(var(--drift-y)*-.7));transition:transform .6s ease-out;opacity:.9}
.map-footnote{position:absolute;bottom:18px;left:4%;right:4%;display:flex;align-items:center;justify-content:space-between;font-size:9px;letter-spacing:1.4px;text-transform:uppercase;color:var(--muted);pointer-events:none}
.map-scroll{font-size:25px;color:var(--gold)}
.map-exploring .project-world:before{opacity:1}
@keyframes star-pulse{50%{filter:drop-shadow(0 0 13px #e7bd7450)}}
@keyframes world-drift{50%{transform:translateY(-3px) rotate(3deg)}}
@media(min-width:1500px){.project-world{width:calc(var(--size)*1.15);height:calc(var(--size)*1.15)}}
@media(max-width:1050px){.constellation{height:820px}.map-heart{width:57%;left:49%;top:42%}.map-heart h1{font-size:71px;letter-spacing:3px}.map-star{left:30%;top:27%;width:94px;height:110px}.map-project{max-width:142px}.project-world{width:calc(var(--size)*.86);height:calc(var(--size)*.86)}.project-world-name{font-size:11px}.map-project-small .project-world{width:var(--size);height:var(--size)}.map-profile{right:9%;height:35%;width:26%}}
@media(prefers-reduced-motion:reduce){.constellation-wires,.map-profile{transform:none!important}.constellation *, .constellation *:before{animation:none!important;transition:none!important}}
.map-heart { left: 50%; top: 49%; width: 60%; max-width: 810px; }
.map-heart h1 { font-size: clamp(59px, 7.1vw, 108px); margin: 0; }
.map-heart h1 span { font-size: clamp(16px, 1.8vw, 26px); }
.constellation-portrait { display: none; }
.pigment-dot { transition: box-shadow .24s ease, transform .24s ease; }
.map-top-link:is(:hover,:focus-visible) .pigment-dot {
  transform: translateY(-2px);
  box-shadow: inset -4px -4px 12px #0002, 0 0 0 4px var(--paper),
    0 0 0 5px var(--pigment), 0 0 22px color-mix(in srgb, var(--pigment) 35%, transparent);
}
.map-project:active .project-world, .map-top-link:active .pigment-dot { transform: scale(.95); }
@media (prefers-reduced-motion: no-preference) {
  .map-project:is(:hover,:focus-visible) .project-world::after {
    animation: node-glint .42s ease-out both;
  }
  @keyframes node-glint {
    from { transform: scale(.82); opacity: .95; }
    to { transform: scale(1); opacity: .45; }
  }
}
@media (min-width: 701px) and (max-width: 1050px) {
  .map-heart { top: 46%; width: 65%; }
  .map-heart h1 { font-size: clamp(58px, 7.4vw, 76px); }
}
@media (max-width: 700px) {
  .homepage .topbar { top: 10px; right: 14px; }
  .constellation {
    display: grid;
    grid-template-columns: minmax(0,1fr);
    gap: 14px;
    height: auto;
    max-height: none;
    padding: 55px clamp(10px,4vw,26px) 22px;
  }
  .constellation::before, .constellation::after, .constellation-wires { display: none; }
  .constellation-portrait {
    display: block;
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    pointer-events: none;
    z-index: -1;
    fill: none;
    stroke: var(--gold);
    opacity: .27;
  }
  .constellation-portrait path { vector-effect: non-scaling-stroke; stroke-width: .8; }
  .constellation-portrait path:nth-child(2) { stroke: var(--blue); }
  .constellation-portrait circle { fill: var(--gold); stroke: none; }
  .map-top { position: relative; inset: auto; display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); }
  .map-top-link {
    position: relative;
    inset: auto;
    transform: none;
    justify-self: center;
    min-width: 64px;
    font-size: 11px;
    gap: 4px;
  }
  .pigment-dot { width: 30px; height: 30px; }
  .map-heart { position: relative; inset: auto; width: 100%; transform: none; }
  .map-heart h1 { font-size: clamp(38px,10.5vw,69px); letter-spacing: .045em; }
  .map-heart h1 span { margin-top: 4px; font-size: 13px; letter-spacing: 8px; padding-left: 8px; }
  .map-projects {
    position: relative;
    inset: auto;
    height: 292px;
  }
  .map-projects .map-project {
    left: var(--mobile-x);
    top: var(--mobile-y);
    transform: translateX(-50%);
    width: max-content;
    max-width: min(31%, 144px);
    min-height: 44px;
    gap: 5px;
    border-radius: 12px;
    outline-offset: 0 !important;
  }
  .map-projects [data-project=growing] { --mobile-x: 17%; --mobile-y: 13px; }
  .map-projects [data-project=elipsy] { --mobile-x: 51%; --mobile-y: 23px; }
  .map-projects [data-project=studio] { --mobile-x: 84%; --mobile-y: 4px; }
  .map-projects [data-project=osakar] { --mobile-x: 22%; --mobile-y: 110px; }
  .map-projects [data-project=ai] { --mobile-x: 82%; --mobile-y: 137px; }
  .map-projects [data-project=blog] { --mobile-x: 44%; --mobile-y: 171px; }
  .map-projects [data-project=invoice] { --mobile-x: 17%; --mobile-y: 221px; }
  .map-projects [data-project=archive] { --mobile-x: 76%; --mobile-y: 248px; }
  .map-projects .project-world {
    width: clamp(47px, calc(var(--size) * .64), 74px);
    height: auto;
    aspect-ratio: 1;
  }
  .map-projects .project-world-name { font-size: 11px; line-height: 1.25; padding: 4px; }
  .map-projects .map-project-small { flex-direction: row; justify-content: center; }
  .map-projects .map-project-small .project-world { width: 18px; }
  .map-projects .project-world-hint { display: none; }
}
