/*! EXO (exogame.eu) © 2026 Patryk Żukiewicz i Eryk Żukiewicz. Wszelkie prawa zastrzeżone. Kopiowanie, rozpowszechnianie i wykorzystanie kodu, grafik i treści bez zgody autorów zabronione. */
.tessara{position:relative;isolation:isolate;min-height:420px;aspect-ratio:21 / 9;border:1px solid var(--line-strong);border-radius:var(--r-lg);background:radial-gradient(70% 80% at 60% 50%,rgba(28,54,98,.42),transparent 70%),linear-gradient(180deg,#0c162ad9,#040812f0);box-shadow:var(--shadow-deep),inset 0 0 0 1px #7fd3ff0d,0 0 80px -34px #7fd3ff73;overflow:hidden;transition:border-color var(--dur),box-shadow var(--dur)}.tessara:hover{border-color:var(--holo-dim);box-shadow:var(--shadow-deep),var(--glow-holo)}.tessara__frame{position:absolute;inset:0;z-index:0;display:block;width:100%;padding:0;border:0;background:none}.tessara__frame canvas{position:absolute;inset:0;width:100%;height:100%;transition:transform 1.2s var(--ease-out)}.tessara:hover .tessara__frame canvas{transform:scale(1.03)}.tessara:after{content:"";position:absolute;inset:0;z-index:1;background:linear-gradient(90deg,rgba(4,8,18,.88) 0%,rgba(4,8,18,.45) 38%,transparent 62%);pointer-events:none}.tessara__copy{position:absolute;left:clamp(1.5rem,4vw,3.5rem);bottom:clamp(1.5rem,4vw,3.25rem);z-index:2;display:grid;justify-items:start;gap:var(--space-3);max-width:420px;pointer-events:none}.tessara__copy .btn{margin-top:var(--space-2);border-radius:999px;pointer-events:auto}.tessara__lead{color:var(--fg-muted)}.tessara__stats{display:flex;flex-wrap:wrap;gap:var(--space-2) var(--space-5);font-family:var(--font-mono);font-size:var(--fs-xs);letter-spacing:.08em;text-transform:uppercase;color:var(--fg-faint)}.tessara__stats b{margin-right:.4em;font-size:var(--fs-md);font-weight:500;color:var(--fg)}.map{position:fixed;inset:0;z-index:70;background:var(--void);overflow:hidden}.map:focus{outline:none}.map__canvas{position:absolute;inset:0;display:block}.map__markers{position:absolute;inset:0;pointer-events:none;transition:opacity .2s}.map.is-busy .map__markers{opacity:0}.map.is-busy .map__markers .mk{pointer-events:none}.map__top{position:absolute;top:0;left:0;right:0;z-index:3;display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2) var(--space-4);padding:calc(env(safe-area-inset-top,0px) + var(--space-3)) var(--gutter) var(--space-3);background:linear-gradient(color-mix(in srgb,var(--void) 92%,transparent),transparent);pointer-events:none}.map__top>*{pointer-events:auto}.map__brand{flex:none;font-family:var(--font-display);font-weight:800;font-size:1.05rem;letter-spacing:.04em}.map__crumbs{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-1) var(--space-2);min-width:0;flex:1}.crumb{padding:.3rem .45rem;border:0;border-radius:2px;background:transparent;font-family:var(--font-mono);font-size:var(--fs-xs);letter-spacing:.1em;text-transform:uppercase;color:var(--fg-muted);transition:color var(--dur),background var(--dur)}button.crumb:hover{color:var(--fg);background:var(--surface-2)}.crumb.is-current{color:var(--accent)}.crumb__sep{color:var(--line-strong);font-family:var(--font-mono)}.map__close{display:flex;align-items:center;gap:var(--space-2);flex:none;padding:.4rem .5rem .4rem .75rem;border:1px solid var(--line-strong);border-radius:var(--r-sm);background:color-mix(in srgb,var(--surface) 80%,transparent);color:var(--fg-muted);font-size:var(--fs-sm);transition:color var(--dur),border-color var(--dur)}.map__close:hover{color:var(--fg);border-color:var(--fg-faint)}.map__hint{order:3;flex-basis:100%;font-family:var(--font-mono);font-size:var(--fs-xs);letter-spacing:.08em;color:var(--fg-faint);pointer-events:none}.map__hint:before{content:"";display:inline-block;width:6px;height:6px;margin-right:var(--space-2);vertical-align:1px;background:var(--accent)}.map__hud{position:absolute;z-index:2;left:var(--gutter);bottom:calc(env(safe-area-inset-bottom,0px) + var(--space-5));display:grid;gap:var(--space-2);font-family:var(--font-mono);font-size:var(--fs-2xs);letter-spacing:.08em;color:var(--fg-muted);pointer-events:none}.hud__row{display:flex;gap:var(--space-3);font-variant-numeric:tabular-nums}.hud__row--note{color:var(--fg-faint)}.hud__k{min-width:2.5em;color:var(--fg-faint)}.mk{position:absolute;top:0;left:0;width:0;height:0;padding:0;border:0;background:none;color:var(--fg);pointer-events:auto;will-change:transform}.mk:focus-visible{outline:none}.mk__hit{position:absolute;left:-20px;top:-20px;width:40px;height:40px;border-radius:50%;transition:box-shadow var(--dur),background var(--dur)}.mk:hover .mk__hit{background:#ffffff0a;box-shadow:0 0 0 1px #ffffff2e}.mk:focus-visible .mk__hit{box-shadow:0 0 0 2px var(--accent)}.mk__label{position:absolute;top:0;left:18px;display:grid;gap:1px;transform:translateY(-50%);white-space:nowrap;text-align:left;pointer-events:auto}.mk--left .mk__label{left:auto;right:18px;text-align:right}.mk__name{font-size:var(--fs-sm);font-weight:500;text-shadow:0 1px 8px var(--void),0 0 2px var(--void)}.mk__sub{font-family:var(--font-mono);font-size:.625rem;letter-spacing:.12em;text-transform:uppercase;color:var(--fg-muted);text-shadow:0 1px 6px var(--void)}.mk--macierzysty .mk__sub{color:var(--accent)}.mk--kolonia .mk__sub{color:var(--status-kanon)}.mk--target .mk__hit{left:-32px;top:-32px;width:64px;height:64px}.mk--target .mk__label{left:42px}.mk--target .mk__name{font-family:var(--font-display);font-size:var(--fs-md);font-weight:600}.mk--target .mk__sub{color:var(--accent)}.mk--unknown .mk__hit{left:-14px;top:-14px;width:28px;height:28px}.mk--unknown .mk__label,.mk--star .mk__label{opacity:0;transform:translate(-4px,-50%);transition:opacity var(--dur),transform var(--dur);pointer-events:none}.mk--unknown:hover .mk__label,.mk--unknown:focus-visible .mk__label,.mk--star:hover .mk__label,.mk--star:focus-visible .mk__label{opacity:1;transform:translateY(-50%)}.mk--unknown .mk__name{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--fg-muted)}.mk--star .mk__hit{left:-26px;top:-26px;width:52px;height:52px}.mk--star .mk__label{left:34px}.mk--planet .mk__label{left:22px}.mk--planet.is-selected .mk__name,.mk--planet-unknown.is-selected .mk__name{color:var(--accent)}.mk--planet-unknown .mk__hit{left:-16px;top:-16px;width:32px;height:32px}.mk--planet-unknown .mk__label{left:14px}.mk--planet-unknown .mk__name{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--fg-faint)}.map__panel{position:absolute;z-index:3;top:calc(env(safe-area-inset-top,0px) + 68px);right:var(--space-4);bottom:var(--space-4);width:360px;overflow-y:auto;overscroll-behavior:contain;border:1px solid var(--line-strong);border-radius:var(--r-md);background:color-mix(in srgb,var(--surface) 88%,transparent);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}.mp{display:grid;gap:var(--space-4);padding:var(--space-5);animation:lift .36s var(--ease-out) both}.mp-eyebrow,.mp-label{font-family:var(--font-mono);font-size:var(--fs-2xs);font-weight:400;letter-spacing:.16em;text-transform:uppercase;color:var(--fg-faint)}.mp-title{margin-top:calc(var(--space-2) * -1);font-family:var(--font-display);font-size:var(--fs-xl);font-weight:600;line-height:1.15;letter-spacing:-.01em}.mp-sub{font-size:var(--fs-sm);color:var(--fg-muted)}.mp-row{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2) var(--space-3);margin-top:calc(var(--space-2) * -1)}.mp-text{font-size:var(--fs-sm);line-height:1.65;color:var(--fg-muted);text-wrap:pretty}.mp-note{font-size:var(--fs-xs);color:var(--fg-faint)}.mp-chip{padding:.18rem .5rem;border:1px solid currentColor;border-radius:2px;font-family:var(--font-mono);font-size:.625rem;letter-spacing:.14em;text-transform:uppercase;white-space:nowrap}.mp-chip--home{color:var(--accent)}.mp-chip--colony{color:var(--status-kanon)}.mp-chip--known{color:var(--fg-muted)}.mp-chip--unknown{color:var(--status-przyklad);border-style:dashed}.mp-facts{display:grid;grid-template-columns:minmax(6.5rem,max-content) 1fr;border-top:1px solid var(--line)}.mp-facts dt,.mp-facts dd{padding:.45rem 0;border-bottom:1px solid var(--line);font-size:var(--fs-sm)}.mp-facts dt{padding-right:var(--space-4);color:var(--fg-faint)}.mp-facts dd{min-width:0}.mp-stats{display:grid;grid-template-columns:1fr 1fr;border:1px solid var(--line);border-radius:var(--r-sm)}.mp-stats div{display:grid;gap:2px;padding:var(--space-3) var(--space-4)}.mp-stats div:nth-child(odd){border-right:1px solid var(--line)}.mp-stats div:nth-child(-n+2){border-bottom:1px solid var(--line)}.mp-stats dt{font-family:var(--font-mono);font-size:var(--fs-2xs);letter-spacing:.1em;text-transform:uppercase;color:var(--fg-faint)}.mp-stats dd{font-family:var(--font-mono);font-size:var(--fs-lg);font-variant-numeric:tabular-nums}.mp-label{margin-bottom:calc(var(--space-2) * -1)}.mp-list{display:grid;gap:var(--space-2);list-style:none;padding:0}.mp-item{display:flex;align-items:center;gap:var(--space-3);width:100%;padding:.6rem var(--space-3);border:1px solid var(--line);border-radius:var(--r-sm);background:var(--bg);text-align:left;transition:border-color var(--dur),background var(--dur)}.mp-item:hover{border-color:var(--line-strong);background:var(--surface-2)}.mp-item__dot{flex:none;width:10px;height:10px;border-radius:50%;background:var(--c);box-shadow:0 0 10px color-mix(in srgb,var(--c) 60%,transparent)}.mp-item__dot.is-unknown{background:transparent;border:1px dashed var(--fg-faint);box-shadow:none}.mp-item__name{flex:1;min-width:0;font-size:var(--fs-sm);font-weight:500}.mp-item__meta{font-family:var(--font-mono);font-size:var(--fs-2xs);color:var(--fg-faint);font-variant-numeric:tabular-nums}.mp-cta{justify-content:center;width:100%}.mp-back{justify-self:start;padding:.3rem 0;border:0;background:none;font-family:var(--font-mono);font-size:var(--fs-xs);letter-spacing:.06em;color:var(--fg-muted)}.mp-back:hover{color:var(--accent)}.map__zoom{position:absolute;z-index:3;left:var(--gutter);top:50%;display:grid;gap:4px;transform:translateY(-50%)}.map[data-level=sky] .map__zoom{display:none}.map__zoom button{display:grid;place-items:center;width:36px;height:36px;border:1px solid var(--line-strong);border-radius:var(--r-sm);background:color-mix(in srgb,var(--surface) 85%,transparent);color:var(--fg-muted);font-family:var(--font-mono);font-size:var(--fs-md);line-height:1;transition:color var(--dur),border-color var(--dur)}.map__zoom button:hover{color:var(--fg);border-color:var(--fg-faint)}.map:not([data-level=sky]) .map__canvas{cursor:grab}.map.is-dragging .map__canvas{cursor:grabbing}.mk--przemyslowy .mk__sub,.mk--obj-bastion .mk__sub{color:#f0716a}.mk--przemyslowy .mk__sub{color:#69a7ff}.mk--korporacyjny .mk__sub{color:#e6c36a}.mk--placowka .mk__sub,.mk--obj-placowka .mk__sub{color:#8fd0ff}.mk--obj-stocznia .mk__sub{color:var(--accent)}.mk--obj-placowka .mk__hit,.mk--obj-bastion .mk__hit,.mk--obj-stocznia .mk__hit{left:-15px;top:-15px;width:30px;height:30px}.mk--obj-placowka .mk__name,.mk--obj-bastion .mk__name,.mk--obj-stocznia .mk__name{font-size:var(--fs-xs)}.mk--obj-placowka .mk__label,.mk--obj-bastion .mk__label,.mk--obj-stocznia .mk__label{left:15px}.mk--left.mk--obj-placowka .mk__label,.mk--left.mk--obj-bastion .mk__label,.mk--left.mk--obj-stocznia .mk__label{left:auto;right:15px}.mk.is-selected .mk__name{color:var(--accent)}.mk.mk--above .mk__label,.mk.mk--below .mk__label{left:0;right:auto;justify-items:center;text-align:center}.mk.mk--above .mk__label{transform:translate(-50%,calc(-100% - 14px))}.mk.mk--below .mk__label{transform:translate(-50%,14px)}.mk--collide .mk__label{opacity:0;pointer-events:none;transition:opacity var(--dur)}.mk--collide:hover .mk__label,.mk--collide:focus-visible .mk__label{opacity:1}.mp-stats--3{grid-template-columns:repeat(3,1fr)}.mp-stats--3 div,.mp-stats--3 div:nth-child(odd){border-right:1px solid var(--line);border-bottom:0}.mp-stats--3 div:nth-child(3n){border-right:0}.mp-stats--3 div:nth-child(-n+3){border-bottom:1px solid var(--line)}.mp-chip--industry{color:#69a7ff}.mp-chip--outpost{color:#8fd0ff}.mp-chip--defense{color:#f0716a}.mp-item__dot--stocznia{border-radius:1px;width:12px;height:7px}.mp-item__dot--bastion{border-radius:0;clip-path:polygon(25% 0,75% 0,100% 50%,75% 100%,25% 100%,0 50%)}.mp-item__dot--placowka{width:8px;height:8px;margin-inline:1px;border-radius:1px;transform:rotate(45deg)}.mp-art{margin:calc(var(--space-2) * -1) 0 0;display:grid;gap:var(--space-2)}.mp-art canvas,.mp-art img{display:block;width:100%;aspect-ratio:16 / 9;object-fit:cover;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--void)}.mp-art figcaption{font-size:var(--fs-xs);color:var(--fg-faint)}.mp-art figcaption span{display:none}.legend{display:grid;grid-template-columns:repeat(2,auto);justify-content:start;gap:6px 16px;list-style:none;padding:0}.legend li{display:flex;align-items:center;gap:var(--space-2)}.lg{flex:none;display:inline-block;width:12px;height:12px;border-radius:50%}.lg--home{border:1.5px solid var(--accent)}.lg--colony{border:1.5px solid var(--status-kanon)}.lg--unknown{width:6px;height:6px;margin-inline:3px;background:var(--fg-faint)}.lg--zone{border-radius:40%;border:1px dashed var(--accent)}.lg--eco{border-radius:2px;background:color-mix(in srgb,var(--status-kanon) 30%,transparent);border:1px dashed var(--status-kanon)}.lg--orbit{border:1px dashed var(--fg-faint)}.lg--industry{border:1.5px solid #69a7ff}.lg--outpost{border-radius:1px;width:10px;height:10px;margin-inline:1px;border:1.5px solid #8fd0ff}.lg--defense{border:1px dashed #f0716a}.lg--yard{width:8px;height:8px;margin-inline:2px;border-radius:1px;background:var(--accent);transform:rotate(45deg)}.lg--outpost-s{width:8px;height:8px;margin-inline:2px;border-radius:1px;border:1.3px solid #8fd0ff;transform:rotate(45deg)}.lg--city{border:1.5px solid var(--accent);background:#f6a94540;box-shadow:0 0 8px #f6a94599}.lg--crater{width:9px;height:9px;margin-inline:1.5px;border-radius:2px;border:1.5px solid #b9df74;transform:rotate(45deg)}.globe{position:absolute;inset:0;z-index:1;opacity:0;touch-action:none;transition:opacity .52s var(--ease-out)}.globe.is-on{opacity:1}.globe__canvas{position:absolute;inset:0;display:block;width:100%;height:100%;cursor:grab;touch-action:none}.globe.is-dragging .globe__canvas{cursor:grabbing}.globe__marks{position:absolute;inset:0;overflow:hidden;pointer-events:none}.map.is-globe .map__markers{visibility:hidden}.gm{position:absolute;left:0;top:0;display:flex;align-items:center;gap:7px;padding:4px;margin:-8px 0 0 -8px;border:0;background:none;color:var(--fg);opacity:0;will-change:transform,opacity}.gm__dot{flex:none;width:16px;height:16px;margin:-4px;border:1.5px solid var(--accent);border-radius:50%;background:transparent;box-shadow:0 0 8px #f6a9458c,inset 0 0 6px #f6a94559;transition:transform var(--dur) var(--ease-out)}.gm.is-capital .gm__dot{border-width:2px}.gm--krater .gm__dot{border-color:#b9df74;border-radius:3px;box-shadow:0 0 8px #b9df748c,inset 0 0 6px #b9df7459;transform:rotate(45deg)}.gm__label{padding:2px 8px;border:1px solid var(--line-strong);border-radius:999px;background:#050912b8;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);font-size:var(--fs-xs);white-space:nowrap;transition:border-color var(--dur),background var(--dur)}.gm:hover .gm__label,.gm.is-active .gm__label{border-color:var(--holo-dim);background:#0a182ce6}.gm:hover .gm__dot,.gm.is-active .gm__dot{transform:scale(1.3)}.gm--krater:hover .gm__dot,.gm--krater.is-active .gm__dot{transform:rotate(45deg) scale(1.3)}.gm.is-active .gm__dot{animation:gm-pulse 1.8s var(--ease-out) infinite}@keyframes gm-pulse{0%{box-shadow:0 0 #f6a94599,inset 0 0 6px #f6a94559}to{box-shadow:0 0 0 14px #f6a94500,inset 0 0 6px #f6a94559}}.mp-item__dot--megamiasto{border:1.5px solid var(--accent);background:#f6a94540}.mp-item__dot--krater{border-radius:2px;border:1.5px solid #b9df74;background:transparent;transform:rotate(45deg)}.mp-item.is-active{border-color:var(--holo-dim);background:var(--holo-soft)}.mp-place{display:grid;gap:var(--space-2);margin-bottom:var(--space-3);padding:var(--space-3) var(--space-4);border:1px solid var(--holo-dim);border-radius:var(--r-md);background:linear-gradient(180deg,var(--holo-soft),transparent 70%);animation:rise .26s var(--ease-out) both}.mp-place__name{font-family:var(--font-display);font-size:var(--fs-lg);font-weight:600;line-height:1.15}.mp-place__link{justify-self:start;padding:0;border:0;background:none;font-size:var(--fs-sm);color:var(--holo)}.mp-place__link:hover{text-decoration:underline}@media (max-width: 760px){.tessara{aspect-ratio:auto;min-height:520px}.tessara:after{background:linear-gradient(180deg,transparent 30%,rgba(4,8,18,.92) 78%)}.tessara__copy{right:clamp(1.5rem,4vw,3.5rem)}}@media (max-width: 899px){.map__panel{inset:auto 0 0;width:auto;max-height:44%;border-width:1px 0 0;border-radius:var(--r-md) var(--r-md) 0 0;padding-bottom:env(safe-area-inset-bottom,0px)}.mp{padding:var(--space-4) var(--space-4) var(--space-5)}.map__hud,.map__brand{display:none}.map__zoom{top:auto;bottom:calc(44% + 12px);transform:none}}@media (max-width: 560px){.map__close-label{display:none}.map__close{padding:.6rem}.crumb{font-size:var(--fs-2xs);padding-inline:.3rem}.map__close{align-self:flex-start}}
