Exceptions
Exception
Symfony\Component\AssetMapper\Exception\ RuntimeException
private function handleMissingImport(string $message, ?\Throwable $e = null): void{match ($this->missingImportMode) {AssetCompilerInterface::MISSING_IMPORT_IGNORE => null,AssetCompilerInterface::MISSING_IMPORT_WARN => $this->logger?->warning($message),AssetCompilerInterface::MISSING_IMPORT_STRICT => throw new RuntimeException($message, 0, $e),};}}
in
vendor/symfony/asset-mapper/Compiler/CssAssetUrlCompiler.php
->
handleMissingImport
(line 88)
if (is_file($resolvedSourcePath)) {$message .= 'exists, but it is not in a mapped asset path. Add it to the "paths" config.';} else {$message .= 'does not exist.';}$this->handleMissingImport($message);// return original, unchanged pathreturn $matches[0][0];}
CssAssetUrlCompiler->Symfony\Component\AssetMapper\Compiler\{closure}(array(array('url("../images/logo-numelan-GlXh2Ad.png")', 2741), array('url(', 2741), array('../images/logo-numelan-GlXh2Ad.png', 2746), array(')', 2781)))
in
vendor/symfony/asset-mapper/Compiler/CssAssetUrlCompiler.php
preg_replace_callback
(line 59)
$commentBlocks[] = [$start, $match[1]];$start = null;}}return preg_replace_callback(self::ASSET_URL_PATTERN, function ($matches) use ($asset, $assetMapper, $commentBlocks) {$matchPos = $matches[0][1];// Ignore matches inside commentsforeach ($commentBlocks as $block) {if ($matchPos > $block[0]) {
in
vendor/symfony/asset-mapper/AssetMapperCompiler.php
->
compile
(line 40)
foreach ($this->assetCompilers as $compiler) {if (!$compiler->supports($asset)) {continue;}$content = $compiler->compile($content, $asset, $this->assetMapper ??= ($this->assetMapperFactory)());}return $content;}
in
vendor/symfony/asset-mapper/Factory/MappedAssetFactory.php
->
compile
(line 107)
if (!$this->compiler->supports($asset)) {return null;}$content = (new Filesystem())->readFile($asset->sourcePath);$compiled = $this->compiler->compile($content, $asset);return $compiled !== $content ? $compiled : null;}private function getPublicPath(MappedAsset $asset, ?string $content): ?string
in
vendor/symfony/asset-mapper/Factory/MappedAssetFactory.php
->
compileContent
(line 51)
if (!isset($this->assetsCache[$logicalPath])) {$isVendor = $this->isVendor($sourcePath);$asset = new MappedAsset($logicalPath, $sourcePath, $this->assetsPathResolver->resolvePublicPath($logicalPath), isVendor: $isVendor);$this->assetsCache[$logicalPath] = $asset;$content = $this->compileContent($asset);[$digest, $isPredigested] = $this->getDigest($asset, $content);$asset = new MappedAsset($asset->logicalPath,$asset->sourcePath,
in
vendor/symfony/asset-mapper/Factory/CachedMappedAssetFactory.php
->
createMappedAsset
(line 43)
if ($configCache->isFresh()) {return unserialize((new Filesystem())->readFile($cachePath));}$mappedAsset = $this->innerFactory->createMappedAsset($logicalPath, $sourcePath);if (!$mappedAsset) {return null;}
in
vendor/symfony/asset-mapper/AssetMapper.php
->
createMappedAsset
(line 41)
$filePath = $this->mapperRepository->find($logicalPath);if (null === $filePath) {return null;}return $this->mappedAssetFactory->createMappedAsset($logicalPath, $filePath);}public function allAssets(): iterable{foreach ($this->mapperRepository->all() as $logicalPath => $filePath) {
in
vendor/symfony/asset-mapper/AssetMapper.php
->
getAsset
(line 47)
}public function allAssets(): iterable{foreach ($this->mapperRepository->all() as $logicalPath => $filePath) {$asset = $this->getAsset($logicalPath);if (null === $asset) {throw new \LogicException(\sprintf('Asset "%s" could not be found.', $logicalPath));}yield $asset;}
in
vendor/symfony/asset-mapper/AssetMapperDevServerSubscriber.php
->
allAssets
(line 193)
}}// we did not find a match$asset = null;foreach ($this->assetMapper->allAssets() as $assetCandidate) {if ($pathInfo === $assetCandidate->publicPath) {$asset = $assetCandidate;break;}}
in
vendor/symfony/asset-mapper/AssetMapperDevServerSubscriber.php
->
findAssetFromCache
(line 127)
$pathInfo = rawurldecode($event->getRequest()->getPathInfo());if (!str_starts_with($pathInfo, $this->publicPrefix)) {return;}$asset = $this->findAssetFromCache($pathInfo);if (!$asset) {throw new NotFoundHttpException(\sprintf('Asset with public path "%s" not found.', $pathInfo));}
in
vendor/symfony/event-dispatcher/Debug/WrappedListener.php
->
onKernelRequest
(line 115)
$this->priority ??= $dispatcher->getListenerPriority($eventName, $this->listener);$e = $this->stopwatch->start($this->name, 'event_listener');try {($this->optimizedListener ?? $this->listener)($event, $eventName, $dispatcher);} finally {if ($e->isStarted()) {$e->stop();}}
in
vendor/symfony/event-dispatcher/EventDispatcher.php
->
__invoke
(line 206)
foreach ($listeners as $listener) {if ($stoppable && $event->isPropagationStopped()) {break;}$listener($event, $eventName, $this);}}/*** Sorts the internal list of listeners for the given event by priority.
in
vendor/symfony/event-dispatcher/EventDispatcher.php
->
callListeners
(line 56)
} else {$listeners = $this->getListeners($eventName);}if ($listeners) {$this->callListeners($listeners, $eventName, $event);}return $event;}
in
vendor/symfony/event-dispatcher/Debug/TraceableEventDispatcher.php
->
dispatch
(line 126)
try {$this->beforeDispatch($eventName, $event);try {$e = $this->stopwatch->start($eventName, 'section');try {$this->dispatcher->dispatch($event, $eventName);} finally {if ($e->isStarted()) {$e->stop();}}
in
vendor/symfony/http-kernel/HttpKernel.php
->
dispatch
(line 159)
*/private function handleRaw(Request $request, int $type = self::MAIN_REQUEST): Response{// request$event = new RequestEvent($this, $request, $type);$this->dispatcher->dispatch($event, KernelEvents::REQUEST);if ($event->hasResponse()) {return $this->filterResponse($event->getResponse(), $request, $type);}
in
vendor/symfony/http-kernel/HttpKernel.php
->
handleRaw
(line 76)
$request->headers->set('X-Php-Ob-Level', (string) ob_get_level());$this->requestStack->push($request);$response = null;try {return $response = $this->handleRaw($request, $type);} catch (\Throwable $e) {if ($e instanceof \Error && !$this->handleAllThrowables) {throw $e;}
in
vendor/symfony/http-kernel/Kernel.php
->
handle
(line 182)
$this->boot();++$this->requestStackSize;$this->resetServices = true;try {return $this->getHttpKernel()->handle($request, $type, $catch);} finally {--$this->requestStackSize;}}
in
vendor/symfony/runtime/Runner/Symfony/HttpKernelRunner.php
->
handle
(line 35)
) {}public function run(): int{$response = $this->kernel->handle($this->request);if (Kernel::VERSION_ID >= 60400) {$response->send(false);if (\function_exists('fastcgi_finish_request') && !$this->debug) {
in
vendor/autoload_runtime.php
->
run
(line 29)
$app = $app(...$args);exit($runtime->getRunner($app)->run());
require_once('/home/obfwrfm/www/landing.numelan.fr/vendor/autoload_runtime.php')
in
public/index.php
(line 5)
<?phpuse App\Kernel;require_once dirname(__DIR__).'/vendor/autoload_runtime.php';return function (array $context) {return new Kernel($context['APP_ENV'], (bool) $context['APP_DEBUG']);};
Logs
| Level | Channel | Message |
|---|---|---|
| DEBUG 23:38:31 | php |
Warning: Zend OPcache API is restricted by "restrict_api" configuration directive {
"exception": {
"severity": 2,
"file": "/home/obfwrfm/www/landing.numelan.fr/vendor/symfony/error-handler/DebugClassLoader.php",
"line": 302,
"trace": [
{
"file": "/home/obfwrfm/www/landing.numelan.fr/vendor/doctrine/doctrine-bundle/src/DoctrineBundle.php",
"line": 136,
"function": "loadClass",
"class": "Symfony\\Component\\ErrorHandler\\DebugClassLoader",
"type": "->"
}
],
"count": 42
}
}
|
| INFO 23:38:31 | request |
Matched route "_profiler". {
"route": "_profiler",
"route_parameters": {
"_route": "_profiler",
"_controller": "web_profiler.controller.profiler::panelAction",
"token": "d42329"
},
"request_uri": "https://www.numelan.fr/_profiler/d42329?panel=exception&type=request",
"method": "GET"
}
|
| DEBUG 23:38:31 | event |
Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\DebugHandlersListener::configure". {
"event": "kernel.request",
"listener": "Symfony\\Component\\HttpKernel\\EventListener\\DebugHandlersListener::configure"
}
|
| DEBUG 23:38:31 | event |
Notified event "kernel.request" to listener "Symfony\UX\Turbo\Request\RequestListener::__invoke". {
"event": "kernel.request",
"listener": "Symfony\\UX\\Turbo\\Request\\RequestListener::__invoke"
}
|
| DEBUG 23:38:31 | event |
Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\ValidateRequestListener::onKernelRequest". {
"event": "kernel.request",
"listener": "Symfony\\Component\\HttpKernel\\EventListener\\ValidateRequestListener::onKernelRequest"
}
|
| DEBUG 23:38:31 | event |
Notified event "kernel.request" to listener "Symfony\Bridge\Doctrine\Middleware\IdleConnection\Listener::onKernelRequest". {
"event": "kernel.request",
"listener": "Symfony\\Bridge\\Doctrine\\Middleware\\IdleConnection\\Listener::onKernelRequest"
}
|
| DEBUG 23:38:31 | event |
Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\SessionListener::onKernelRequest". {
"event": "kernel.request",
"listener": "Symfony\\Component\\HttpKernel\\EventListener\\SessionListener::onKernelRequest"
}
|
| DEBUG 23:38:31 | event |
Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\LocaleListener::setDefaultLocale". {
"event": "kernel.request",
"listener": "Symfony\\Component\\HttpKernel\\EventListener\\LocaleListener::setDefaultLocale"
}
|
| DEBUG 23:38:31 | event |
Notified event "kernel.request" to listener "Symfony\Component\AssetMapper\AssetMapperDevServerSubscriber::onKernelRequest". {
"event": "kernel.request",
"listener": "Symfony\\Component\\AssetMapper\\AssetMapperDevServerSubscriber::onKernelRequest"
}
|
| DEBUG 23:38:31 | event |
Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\RouterListener::onKernelRequest". {
"event": "kernel.request",
"listener": "Symfony\\Component\\HttpKernel\\EventListener\\RouterListener::onKernelRequest"
}
|
| DEBUG 23:38:31 | event |
Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\LocaleListener::onKernelRequest". {
"event": "kernel.request",
"listener": "Symfony\\Component\\HttpKernel\\EventListener\\LocaleListener::onKernelRequest"
}
|
| DEBUG 23:38:31 | event |
Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\LocaleAwareListener::onKernelRequest". {
"event": "kernel.request",
"listener": "Symfony\\Component\\HttpKernel\\EventListener\\LocaleAwareListener::onKernelRequest"
}
|
| DEBUG 23:38:31 | event |
Notified event "kernel.request" to listener "Symfony\Bundle\SecurityBundle\Debug\TraceableFirewallListener::configureLogoutUrlGenerator". {
"event": "kernel.request",
"listener": "Symfony\\Bundle\\SecurityBundle\\Debug\\TraceableFirewallListener::configureLogoutUrlGenerator"
}
|
| DEBUG 23:38:31 | event |
Notified event "kernel.request" to listener "Symfony\Bundle\SecurityBundle\Debug\TraceableFirewallListener::onKernelRequest". {
"event": "kernel.request",
"listener": "Symfony\\Bundle\\SecurityBundle\\Debug\\TraceableFirewallListener::onKernelRequest"
}
|
| DEBUG 23:38:31 | event |
Notified event "kernel.controller" to listener "Symfony\Bundle\FrameworkBundle\DataCollector\RouterDataCollector::onKernelController". {
"event": "kernel.controller",
"listener": "Symfony\\Bundle\\FrameworkBundle\\DataCollector\\RouterDataCollector::onKernelController"
}
|
| DEBUG 23:38:31 | event |
Notified event "kernel.controller" to listener "Symfony\Component\HttpKernel\DataCollector\RequestDataCollector::onKernelController". {
"event": "kernel.controller",
"listener": "Symfony\\Component\\HttpKernel\\DataCollector\\RequestDataCollector::onKernelController"
}
|
| DEBUG 23:38:31 | event |
Notified event "kernel.controller_arguments" to listener "Symfony\Component\Security\Http\EventListener\IsCsrfTokenValidAttributeListener::onKernelControllerArguments". {
"event": "kernel.controller_arguments",
"listener": "Symfony\\Component\\Security\\Http\\EventListener\\IsCsrfTokenValidAttributeListener::onKernelControllerArguments"
}
|
| DEBUG 23:38:31 | event |
Notified event "kernel.controller_arguments" to listener "Symfony\Component\Security\Http\EventListener\IsGrantedAttributeListener::onKernelControllerArguments". {
"event": "kernel.controller_arguments",
"listener": "Symfony\\Component\\Security\\Http\\EventListener\\IsGrantedAttributeListener::onKernelControllerArguments"
}
|
| DEBUG 23:38:31 | event |
Notified event "kernel.controller_arguments" to listener "Symfony\Component\HttpKernel\EventListener\CacheAttributeListener::onKernelControllerArguments". {
"event": "kernel.controller_arguments",
"listener": "Symfony\\Component\\HttpKernel\\EventListener\\CacheAttributeListener::onKernelControllerArguments"
}
|
| DEBUG 23:38:31 | event |
Notified event "kernel.controller_arguments" to listener "Container9xJ2YM2\RequestPayloadValueResolverGhost01ca9cc::onKernelControllerArguments". {
"event": "kernel.controller_arguments",
"listener": "Container9xJ2YM2\\RequestPayloadValueResolverGhost01ca9cc::onKernelControllerArguments"
}
|
| DEBUG 23:38:31 | event |
Notified event "kernel.controller_arguments" to listener "Symfony\Component\HttpKernel\EventListener\ErrorListener::onControllerArguments". {
"event": "kernel.controller_arguments",
"listener": "Symfony\\Component\\HttpKernel\\EventListener\\ErrorListener::onControllerArguments"
}
|
Stack Trace
|
RuntimeException
|
|---|
Symfony\Component\AssetMapper\Exception\RuntimeException:
Unable to find asset "../images/logo-numelan-GlXh2Ad.png" referenced in "/home/obfwrfm/www/landing.numelan.fr/assets/styles/landing.css". The file "/home/obfwrfm/www/landing.numelan.fr/assets/images/logo-numelan-GlXh2Ad.png" does not exist.
at vendor/symfony/asset-mapper/Compiler/CssAssetUrlCompiler.php:111
at Symfony\Component\AssetMapper\Compiler\CssAssetUrlCompiler->handleMissingImport('Unable to find asset "../images/logo-numelan-GlXh2Ad.png" referenced in "/home/obfwrfm/www/landing.numelan.fr/assets/styles/landing.css". The file "/home/obfwrfm/www/landing.numelan.fr/assets/images/logo-numelan-GlXh2Ad.png" does not exist.')
(vendor/symfony/asset-mapper/Compiler/CssAssetUrlCompiler.php:88)
at Symfony\Component\AssetMapper\Compiler\CssAssetUrlCompiler->Symfony\Component\AssetMapper\Compiler\{closure}(array(array('url("../images/logo-numelan-GlXh2Ad.png")', 2741), array('url(', 2741), array('../images/logo-numelan-GlXh2Ad.png', 2746), array(')', 2781)))
at preg_replace_callback('{ (?| (url\\()\\s*+["\']?(?!(?:/|\\#|%23|data|http|//))([^"\')\\s?#]++)(?:[?#][^"\')]++)?["\']?\\s*+(\\)) | (@import\\s++)["\'](?!(?:/|\\#|%23|data|http|//))([^"\')\\s?#]++)(?:[?#][^"\')]++)?["\'] )}x', object(Closure), '/* cyrillic-ext */@font-face { font-family: \'Inter\'; font-style: normal; font-weight: 400; src: url(https://fonts.gstatic.com/s/inter/v20/UcCO3FwrK3iLTeHuS_nVMrMxCp50SjIw2boKoduKmMEVuLyfAZJhiI2B.woff2) format(\'woff2\'); unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}/* cyrillic */@font-face { font-family: \'Inter\'; font-style: normal; font-weight: 400; src: url(https://fonts.gstatic.com/s/inter/v20/UcCO3FwrK3iLTeHuS_nVMrMxCp50SjIw2boKoduKmMEVuLyfAZthiI2B.woff2) format(\'woff2\'); unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}/* greek-ext */@font-face { font-family: \'Inter\'; font-style: normal; font-weight: 400; src: url(https://fonts.gstatic.com/s/inter/v20/UcCO3FwrK3iLTeHuS_nVMrMxCp50SjIw2boKoduKmMEVuLyfAZNhiI2B.woff2) format(\'woff2\'); unicode-range: U+1F00-1FFF;}/* greek */@font-face { font-family: \'Inter\'; font-style: normal; font-weight: 400; src: url(https://fonts.gstatic.com/s/inter/v20/UcCO3FwrK3iLTeHuS_nVMrMxCp50SjIw2boKoduKmMEVuLyfAZxhiI2B.woff2) format(\'woff2\'); unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;}/* vietnamese */@font-face { font-family: \'Inter\'; font-style: normal; font-weight: 400; src: url(https://fonts.gstatic.com/s/inter/v20/UcCO3FwrK3iLTeHuS_nVMrMxCp50SjIw2boKoduKmMEVuLyfAZBhiI2B.woff2) format(\'woff2\'); unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;}/* latin-ext */@font-face { font-family: \'Inter\'; font-style: normal; font-weight: 400; src: url(https://fonts.gstatic.com/s/inter/v20/UcCO3FwrK3iLTeHuS_nVMrMxCp50SjIw2boKoduKmMEVuLyfAZFhiI2B.woff2) format(\'woff2\'); unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}/* latin */@font-face { font-family: \'Inter\'; font-style: normal; font-weight: 400; src: url(https://fonts.gstatic.com/s/inter/v20/UcCO3FwrK3iLTeHuS_nVMrMxCp50SjIw2boKoduKmMEVuLyfAZ9hiA.woff2) format(\'woff2\'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}*, html, body { margin:0; padding:0; box-sizing: border-box !important;}.container { padding-left: 26px; padding-right: 26px;}.menu-navbar { position: fixed; width:100%; top:0; z-index: 2;}.navbar-logo { background-color: #ebebeb; background-image: url("../images/logo-numelan-GlXh2Ad.png"); background-size: contain; width: 90px; height:90px; float: left; position:relative; border-bottom-left-radius: 12px; border-bottom-right-radius: 12px; margin-top: 0px; color: transparent;}.small-menu-button { background-color: #ebebeb; width: 90px; height:90px; display: block; float: right; position:relative; border-bottom-left-radius: 12px; border-bottom-right-radius: 12px; margin-top: 0px; padding:25px; color:#11587e;}.large-menu{ display:none;}.btn { padding-left: 15px; padding-right: 15px; padding-top: 9px; padding-bottom: 9px; font-family: \'Inter\'; font-size: 14px; text-decoration: none; line-height: 20px; text-align: center; border-radius: 9px;}.blue-btn { background-color: #11587e; color:#ebebeb;}.white-btn { background-color: #ebebeb; color:#11587e;}.blue-text { color:#11587e;}.white-text { color:#ebebeb;}h1{ font-family: \'Inter\'; font-weight: 400;}h2{ font-family: \'Inter\'; font-weight: 700; font-size: 32px; line-height: 36px;}h3{ font-family: \'Inter\'; font-weight: 700; font-size: 24px; line-height: 30px;}p{ font-family: \'Inter\';}@media (min-width: 1250px) { .navbar-logo, .small-menu-button { margin-top: -10px; } .large-menu{ display: block; margin-top: 10px; margin-left: auto; margin-right: auto; padding: 10px 28px 10px 28px; max-width: 820px; position: relative; background-color: #ebebeb; border-radius: 12px; } .large-menu a{ display: inline-block; vertical-align: baseline; padding: 20px 10px 20px 10px; position: relative; font-family: \'Inter\'; font-size: 14px; line-height: 20px; color: #11587e; text-decoration: none; } .contact-menu-link{ margin-top: 6px; margin-left: 40px; margin-bottom: 6px; background-color: #11587e; color: #ebebeb!important; border-radius: 12px; padding: 14px 20px 14px 20px!important; }}/* ---------- Numelan Modern UI (startup) ---------- */:root{ --bg:#FDFDFB; --surface:rgba(255,255,255,.78); --surface2:rgba(255,255,255,.92); --text:#1A1A1A; --muted:#555555; --primary:#11587D; --primary2:#0A5C7D; --accent:#B3DFF0; --border:rgba(17,88,125,.14); --shadow:0 18px 50px rgba(17,88,125,.12); --shadow2:0 10px 28px rgba(17,88,125,.10); --radius:18px;}html, body{ background:var(--bg); color:var(--text); font-family: Inter, system-ui, -apple-system, Segoe UI, Roboto, Arial, sans-serif;}.page{ overflow:hidden;}/* smooth anchor scroll */html{ scroll-behavior:smooth; }/* HERO */.hero{ position:relative; padding:56px 0 28px; background: radial-gradient(800px 400px at 20% 10%, rgba(179,223,240,.55), transparent 65%), radial-gradient(900px 520px at 85% 15%, rgba(17,88,125,.25), transparent 60%), linear-gradient(180deg, rgba(17,88,125,.06), rgba(17,88,125,.00)); border-bottom:1px solid var(--border);}.hero-grid{ display:grid; grid-template-columns: 1.05fr .95fr; gap:28px; align-items:center;}.hero-top{ grid-column:1 / -1; display:flex; align-items:center; justify-content:space-between; gap:16px; padding:14px 16px; background:rgb(236, 235, 235); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); border:1px solid var(--border); border-radius:999px; box-shadow: var(--shadow2);}.brand-lockup{ display:flex; align-items:center; gap:12px; text-decoration:none; }.brand-logo{ height:34px; width:auto; display:block; }.hero-nav{ display:flex; align-items:center; gap:14px; }.hero-nav a{ color:var(--text); text-decoration:none; font-weight:600; font-size:14px; padding:10px 12px; border-radius:999px; transition: transform .15s ease, background .15s ease;}.hero-nav a:hover{ background:rgba(179,223,240,.35); transform: translateY(-1px); }.hero-nav .nav-cta{ color:white; background:linear-gradient(135deg, var(--primary), var(--accent)); box-shadow: 0 10px 24px rgba(17,88,125,.20);}.hero-copy h1{ letter-spacing:-0.02em; line-height:1.05; margin-top:10px;}.badge{ display:inline-flex; align-items:center; gap:8px; padding:8px 12px; border-radius:999px; border:1px solid var(--border); background:rgba(255,255,255,.6); font-weight:700; font-size:12px; color:var(--primary);}.hero-visual img{ width:100%; height:auto; display:block; border-radius:24px; box-shadow: var(--shadow);}.trust{ display:flex; flex-wrap:wrap; gap:10px; margin-top:16px;}.pill{ padding:8px 12px; border-radius:999px; border:1px solid var(--border); background:rgba(255,255,255,.62); font-weight:600; font-size:13px;}/* SECTIONS */.section{ padding:64px 0;}.section h2{ letter-spacing:-0.02em;}.cards{ gap:18px;}.card{ background: var(--surface); border:1px solid var(--border); border-radius: var(--radius); box-shadow: var(--shadow2); position:relative; overflow:hidden;}.card:before{ content:""; position:absolute; inset:-2px; background: radial-gradient(420px 220px at 20% 0%, rgba(179,223,240,.55), transparent 65%); opacity:.55; pointer-events:none;}.card > *{ position:relative; }.card-icon{ width:56px; height:56px; border-radius:16px; border:1px solid var(--border); background:rgba(255,255,255,.75); display:flex; align-items:center; justify-content:center; margin-bottom:12px; box-shadow: 0 12px 28px rgba(17,88,125,.10);}.card-icon img{ width:42px; height:42px; display:block; }.card h3{ margin-top:0; }/* PROCESS */.process-grid{ display:grid; grid-template-columns: 1.1fr .9fr; gap:26px; align-items:start;}.process-visual img{ width:100%; height:auto; display:block; border-radius:24px; border:1px solid var(--border); box-shadow: var(--shadow2);}.steps{ background:rgba(255,255,255,.60); border:1px solid var(--border); border-radius: var(--radius); padding:18px 18px 18px 26px; box-shadow: var(--shadow2);}.steps li{ padding:8px 0; }/* CTA */.cta{ background: radial-gradient(800px 380px at 15% 20%, rgba(179,223,240,.55), transparent 60%), radial-gradient(900px 520px at 85% 50%, rgba(17,88,125,.22), transparent 60%), linear-gradient(180deg, rgba(17,88,125,.05), rgba(17,88,125,.00)); border-top:1px solid var(--border); border-bottom:1px solid var(--border);}.btn{ border-radius:999px !important; border:1px solid var(--border) !important; background:rgba(255,255,255,.75) !important; transition: transform .15s ease, box-shadow .15s ease, background .15s ease;}.btn:hover{ transform: translateY(-1px); box-shadow: 0 14px 30px rgba(17,88,125,.14);}.btn.primary{ border:none !important; color:white !important; background:linear-gradient(135deg, var(--primary), var(--accent)) !important; box-shadow: 0 14px 30px rgba(17,88,125,.22);}/* CONTACT FORM */.form{ background:rgba(255,255,255,.72); border:1px solid var(--border); border-radius: var(--radius); box-shadow: var(--shadow2);}input, textarea, select{ border-radius:14px !important; border:1px solid rgba(17,88,125,.20) !important; background:rgba(255,255,255,.92) !important;}input:focus, textarea:focus{ outline:none !important; box-shadow: 0 0 0 4px rgba(179,223,240,.45) !important; border-color: rgba(17,88,125,.35) !important;}/* FOOTER */.footer{ padding:40px 0 60px; background: linear-gradient(180deg, rgba(17,88,125,.02), rgba(17,88,125,.00));}.footer-grid{ display:flex; align-items:flex-start; justify-content:space-between; gap:22px; flex-wrap:wrap;}.footer-logo{ height:36px; width:auto; display:block; margin-bottom:10px; }.footer-links{ display:flex; gap:14px; flex-wrap:wrap; }.footer-links a{ text-decoration:none; font-weight:700; color:var(--primary); padding:10px 12px; border-radius:999px; border:1px solid var(--border); background:rgba(255,255,255,.68);}.footer-links a:hover{ background:rgba(179,223,240,.35); }/* RESPONSIVE */@media (max-width: 900px){ .hero-grid{ grid-template-columns: 1fr; } .hero-top{ border-radius: 18px; } .hero-nav{ gap:8px; } .hero-nav a{ padding:10px 10px; } .process-grid{ grid-template-columns: 1fr; }}', -1, null, 256)
(vendor/symfony/asset-mapper/Compiler/CssAssetUrlCompiler.php:59)
at Symfony\Component\AssetMapper\Compiler\CssAssetUrlCompiler->compile('/* cyrillic-ext */@font-face { font-family: \'Inter\'; font-style: normal; font-weight: 400; src: url(https://fonts.gstatic.com/s/inter/v20/UcCO3FwrK3iLTeHuS_nVMrMxCp50SjIw2boKoduKmMEVuLyfAZJhiI2B.woff2) format(\'woff2\'); unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}/* cyrillic */@font-face { font-family: \'Inter\'; font-style: normal; font-weight: 400; src: url(https://fonts.gstatic.com/s/inter/v20/UcCO3FwrK3iLTeHuS_nVMrMxCp50SjIw2boKoduKmMEVuLyfAZthiI2B.woff2) format(\'woff2\'); unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}/* greek-ext */@font-face { font-family: \'Inter\'; font-style: normal; font-weight: 400; src: url(https://fonts.gstatic.com/s/inter/v20/UcCO3FwrK3iLTeHuS_nVMrMxCp50SjIw2boKoduKmMEVuLyfAZNhiI2B.woff2) format(\'woff2\'); unicode-range: U+1F00-1FFF;}/* greek */@font-face { font-family: \'Inter\'; font-style: normal; font-weight: 400; src: url(https://fonts.gstatic.com/s/inter/v20/UcCO3FwrK3iLTeHuS_nVMrMxCp50SjIw2boKoduKmMEVuLyfAZxhiI2B.woff2) format(\'woff2\'); unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;}/* vietnamese */@font-face { font-family: \'Inter\'; font-style: normal; font-weight: 400; src: url(https://fonts.gstatic.com/s/inter/v20/UcCO3FwrK3iLTeHuS_nVMrMxCp50SjIw2boKoduKmMEVuLyfAZBhiI2B.woff2) format(\'woff2\'); unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;}/* latin-ext */@font-face { font-family: \'Inter\'; font-style: normal; font-weight: 400; src: url(https://fonts.gstatic.com/s/inter/v20/UcCO3FwrK3iLTeHuS_nVMrMxCp50SjIw2boKoduKmMEVuLyfAZFhiI2B.woff2) format(\'woff2\'); unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}/* latin */@font-face { font-family: \'Inter\'; font-style: normal; font-weight: 400; src: url(https://fonts.gstatic.com/s/inter/v20/UcCO3FwrK3iLTeHuS_nVMrMxCp50SjIw2boKoduKmMEVuLyfAZ9hiA.woff2) format(\'woff2\'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}*, html, body { margin:0; padding:0; box-sizing: border-box !important;}.container { padding-left: 26px; padding-right: 26px;}.menu-navbar { position: fixed; width:100%; top:0; z-index: 2;}.navbar-logo { background-color: #ebebeb; background-image: url("../images/logo-numelan-GlXh2Ad.png"); background-size: contain; width: 90px; height:90px; float: left; position:relative; border-bottom-left-radius: 12px; border-bottom-right-radius: 12px; margin-top: 0px; color: transparent;}.small-menu-button { background-color: #ebebeb; width: 90px; height:90px; display: block; float: right; position:relative; border-bottom-left-radius: 12px; border-bottom-right-radius: 12px; margin-top: 0px; padding:25px; color:#11587e;}.large-menu{ display:none;}.btn { padding-left: 15px; padding-right: 15px; padding-top: 9px; padding-bottom: 9px; font-family: \'Inter\'; font-size: 14px; text-decoration: none; line-height: 20px; text-align: center; border-radius: 9px;}.blue-btn { background-color: #11587e; color:#ebebeb;}.white-btn { background-color: #ebebeb; color:#11587e;}.blue-text { color:#11587e;}.white-text { color:#ebebeb;}h1{ font-family: \'Inter\'; font-weight: 400;}h2{ font-family: \'Inter\'; font-weight: 700; font-size: 32px; line-height: 36px;}h3{ font-family: \'Inter\'; font-weight: 700; font-size: 24px; line-height: 30px;}p{ font-family: \'Inter\';}@media (min-width: 1250px) { .navbar-logo, .small-menu-button { margin-top: -10px; } .large-menu{ display: block; margin-top: 10px; margin-left: auto; margin-right: auto; padding: 10px 28px 10px 28px; max-width: 820px; position: relative; background-color: #ebebeb; border-radius: 12px; } .large-menu a{ display: inline-block; vertical-align: baseline; padding: 20px 10px 20px 10px; position: relative; font-family: \'Inter\'; font-size: 14px; line-height: 20px; color: #11587e; text-decoration: none; } .contact-menu-link{ margin-top: 6px; margin-left: 40px; margin-bottom: 6px; background-color: #11587e; color: #ebebeb!important; border-radius: 12px; padding: 14px 20px 14px 20px!important; }}/* ---------- Numelan Modern UI (startup) ---------- */:root{ --bg:#FDFDFB; --surface:rgba(255,255,255,.78); --surface2:rgba(255,255,255,.92); --text:#1A1A1A; --muted:#555555; --primary:#11587D; --primary2:#0A5C7D; --accent:#B3DFF0; --border:rgba(17,88,125,.14); --shadow:0 18px 50px rgba(17,88,125,.12); --shadow2:0 10px 28px rgba(17,88,125,.10); --radius:18px;}html, body{ background:var(--bg); color:var(--text); font-family: Inter, system-ui, -apple-system, Segoe UI, Roboto, Arial, sans-serif;}.page{ overflow:hidden;}/* smooth anchor scroll */html{ scroll-behavior:smooth; }/* HERO */.hero{ position:relative; padding:56px 0 28px; background: radial-gradient(800px 400px at 20% 10%, rgba(179,223,240,.55), transparent 65%), radial-gradient(900px 520px at 85% 15%, rgba(17,88,125,.25), transparent 60%), linear-gradient(180deg, rgba(17,88,125,.06), rgba(17,88,125,.00)); border-bottom:1px solid var(--border);}.hero-grid{ display:grid; grid-template-columns: 1.05fr .95fr; gap:28px; align-items:center;}.hero-top{ grid-column:1 / -1; display:flex; align-items:center; justify-content:space-between; gap:16px; padding:14px 16px; background:rgb(236, 235, 235); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); border:1px solid var(--border); border-radius:999px; box-shadow: var(--shadow2);}.brand-lockup{ display:flex; align-items:center; gap:12px; text-decoration:none; }.brand-logo{ height:34px; width:auto; display:block; }.hero-nav{ display:flex; align-items:center; gap:14px; }.hero-nav a{ color:var(--text); text-decoration:none; font-weight:600; font-size:14px; padding:10px 12px; border-radius:999px; transition: transform .15s ease, background .15s ease;}.hero-nav a:hover{ background:rgba(179,223,240,.35); transform: translateY(-1px); }.hero-nav .nav-cta{ color:white; background:linear-gradient(135deg, var(--primary), var(--accent)); box-shadow: 0 10px 24px rgba(17,88,125,.20);}.hero-copy h1{ letter-spacing:-0.02em; line-height:1.05; margin-top:10px;}.badge{ display:inline-flex; align-items:center; gap:8px; padding:8px 12px; border-radius:999px; border:1px solid var(--border); background:rgba(255,255,255,.6); font-weight:700; font-size:12px; color:var(--primary);}.hero-visual img{ width:100%; height:auto; display:block; border-radius:24px; box-shadow: var(--shadow);}.trust{ display:flex; flex-wrap:wrap; gap:10px; margin-top:16px;}.pill{ padding:8px 12px; border-radius:999px; border:1px solid var(--border); background:rgba(255,255,255,.62); font-weight:600; font-size:13px;}/* SECTIONS */.section{ padding:64px 0;}.section h2{ letter-spacing:-0.02em;}.cards{ gap:18px;}.card{ background: var(--surface); border:1px solid var(--border); border-radius: var(--radius); box-shadow: var(--shadow2); position:relative; overflow:hidden;}.card:before{ content:""; position:absolute; inset:-2px; background: radial-gradient(420px 220px at 20% 0%, rgba(179,223,240,.55), transparent 65%); opacity:.55; pointer-events:none;}.card > *{ position:relative; }.card-icon{ width:56px; height:56px; border-radius:16px; border:1px solid var(--border); background:rgba(255,255,255,.75); display:flex; align-items:center; justify-content:center; margin-bottom:12px; box-shadow: 0 12px 28px rgba(17,88,125,.10);}.card-icon img{ width:42px; height:42px; display:block; }.card h3{ margin-top:0; }/* PROCESS */.process-grid{ display:grid; grid-template-columns: 1.1fr .9fr; gap:26px; align-items:start;}.process-visual img{ width:100%; height:auto; display:block; border-radius:24px; border:1px solid var(--border); box-shadow: var(--shadow2);}.steps{ background:rgba(255,255,255,.60); border:1px solid var(--border); border-radius: var(--radius); padding:18px 18px 18px 26px; box-shadow: var(--shadow2);}.steps li{ padding:8px 0; }/* CTA */.cta{ background: radial-gradient(800px 380px at 15% 20%, rgba(179,223,240,.55), transparent 60%), radial-gradient(900px 520px at 85% 50%, rgba(17,88,125,.22), transparent 60%), linear-gradient(180deg, rgba(17,88,125,.05), rgba(17,88,125,.00)); border-top:1px solid var(--border); border-bottom:1px solid var(--border);}.btn{ border-radius:999px !important; border:1px solid var(--border) !important; background:rgba(255,255,255,.75) !important; transition: transform .15s ease, box-shadow .15s ease, background .15s ease;}.btn:hover{ transform: translateY(-1px); box-shadow: 0 14px 30px rgba(17,88,125,.14);}.btn.primary{ border:none !important; color:white !important; background:linear-gradient(135deg, var(--primary), var(--accent)) !important; box-shadow: 0 14px 30px rgba(17,88,125,.22);}/* CONTACT FORM */.form{ background:rgba(255,255,255,.72); border:1px solid var(--border); border-radius: var(--radius); box-shadow: var(--shadow2);}input, textarea, select{ border-radius:14px !important; border:1px solid rgba(17,88,125,.20) !important; background:rgba(255,255,255,.92) !important;}input:focus, textarea:focus{ outline:none !important; box-shadow: 0 0 0 4px rgba(179,223,240,.45) !important; border-color: rgba(17,88,125,.35) !important;}/* FOOTER */.footer{ padding:40px 0 60px; background: linear-gradient(180deg, rgba(17,88,125,.02), rgba(17,88,125,.00));}.footer-grid{ display:flex; align-items:flex-start; justify-content:space-between; gap:22px; flex-wrap:wrap;}.footer-logo{ height:36px; width:auto; display:block; margin-bottom:10px; }.footer-links{ display:flex; gap:14px; flex-wrap:wrap; }.footer-links a{ text-decoration:none; font-weight:700; color:var(--primary); padding:10px 12px; border-radius:999px; border:1px solid var(--border); background:rgba(255,255,255,.68);}.footer-links a:hover{ background:rgba(179,223,240,.35); }/* RESPONSIVE */@media (max-width: 900px){ .hero-grid{ grid-template-columns: 1fr; } .hero-top{ border-radius: 18px; } .hero-nav{ gap:8px; } .hero-nav a{ padding:10px 10px; } .process-grid{ grid-template-columns: 1fr; }}', object(MappedAsset), object(AssetMapper))
(vendor/symfony/asset-mapper/AssetMapperCompiler.php:40)
at Symfony\Component\AssetMapper\AssetMapperCompiler->compile('/* cyrillic-ext */@font-face { font-family: \'Inter\'; font-style: normal; font-weight: 400; src: url(https://fonts.gstatic.com/s/inter/v20/UcCO3FwrK3iLTeHuS_nVMrMxCp50SjIw2boKoduKmMEVuLyfAZJhiI2B.woff2) format(\'woff2\'); unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}/* cyrillic */@font-face { font-family: \'Inter\'; font-style: normal; font-weight: 400; src: url(https://fonts.gstatic.com/s/inter/v20/UcCO3FwrK3iLTeHuS_nVMrMxCp50SjIw2boKoduKmMEVuLyfAZthiI2B.woff2) format(\'woff2\'); unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}/* greek-ext */@font-face { font-family: \'Inter\'; font-style: normal; font-weight: 400; src: url(https://fonts.gstatic.com/s/inter/v20/UcCO3FwrK3iLTeHuS_nVMrMxCp50SjIw2boKoduKmMEVuLyfAZNhiI2B.woff2) format(\'woff2\'); unicode-range: U+1F00-1FFF;}/* greek */@font-face { font-family: \'Inter\'; font-style: normal; font-weight: 400; src: url(https://fonts.gstatic.com/s/inter/v20/UcCO3FwrK3iLTeHuS_nVMrMxCp50SjIw2boKoduKmMEVuLyfAZxhiI2B.woff2) format(\'woff2\'); unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;}/* vietnamese */@font-face { font-family: \'Inter\'; font-style: normal; font-weight: 400; src: url(https://fonts.gstatic.com/s/inter/v20/UcCO3FwrK3iLTeHuS_nVMrMxCp50SjIw2boKoduKmMEVuLyfAZBhiI2B.woff2) format(\'woff2\'); unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;}/* latin-ext */@font-face { font-family: \'Inter\'; font-style: normal; font-weight: 400; src: url(https://fonts.gstatic.com/s/inter/v20/UcCO3FwrK3iLTeHuS_nVMrMxCp50SjIw2boKoduKmMEVuLyfAZFhiI2B.woff2) format(\'woff2\'); unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}/* latin */@font-face { font-family: \'Inter\'; font-style: normal; font-weight: 400; src: url(https://fonts.gstatic.com/s/inter/v20/UcCO3FwrK3iLTeHuS_nVMrMxCp50SjIw2boKoduKmMEVuLyfAZ9hiA.woff2) format(\'woff2\'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}*, html, body { margin:0; padding:0; box-sizing: border-box !important;}.container { padding-left: 26px; padding-right: 26px;}.menu-navbar { position: fixed; width:100%; top:0; z-index: 2;}.navbar-logo { background-color: #ebebeb; background-image: url("../images/logo-numelan-GlXh2Ad.png"); background-size: contain; width: 90px; height:90px; float: left; position:relative; border-bottom-left-radius: 12px; border-bottom-right-radius: 12px; margin-top: 0px; color: transparent;}.small-menu-button { background-color: #ebebeb; width: 90px; height:90px; display: block; float: right; position:relative; border-bottom-left-radius: 12px; border-bottom-right-radius: 12px; margin-top: 0px; padding:25px; color:#11587e;}.large-menu{ display:none;}.btn { padding-left: 15px; padding-right: 15px; padding-top: 9px; padding-bottom: 9px; font-family: \'Inter\'; font-size: 14px; text-decoration: none; line-height: 20px; text-align: center; border-radius: 9px;}.blue-btn { background-color: #11587e; color:#ebebeb;}.white-btn { background-color: #ebebeb; color:#11587e;}.blue-text { color:#11587e;}.white-text { color:#ebebeb;}h1{ font-family: \'Inter\'; font-weight: 400;}h2{ font-family: \'Inter\'; font-weight: 700; font-size: 32px; line-height: 36px;}h3{ font-family: \'Inter\'; font-weight: 700; font-size: 24px; line-height: 30px;}p{ font-family: \'Inter\';}@media (min-width: 1250px) { .navbar-logo, .small-menu-button { margin-top: -10px; } .large-menu{ display: block; margin-top: 10px; margin-left: auto; margin-right: auto; padding: 10px 28px 10px 28px; max-width: 820px; position: relative; background-color: #ebebeb; border-radius: 12px; } .large-menu a{ display: inline-block; vertical-align: baseline; padding: 20px 10px 20px 10px; position: relative; font-family: \'Inter\'; font-size: 14px; line-height: 20px; color: #11587e; text-decoration: none; } .contact-menu-link{ margin-top: 6px; margin-left: 40px; margin-bottom: 6px; background-color: #11587e; color: #ebebeb!important; border-radius: 12px; padding: 14px 20px 14px 20px!important; }}/* ---------- Numelan Modern UI (startup) ---------- */:root{ --bg:#FDFDFB; --surface:rgba(255,255,255,.78); --surface2:rgba(255,255,255,.92); --text:#1A1A1A; --muted:#555555; --primary:#11587D; --primary2:#0A5C7D; --accent:#B3DFF0; --border:rgba(17,88,125,.14); --shadow:0 18px 50px rgba(17,88,125,.12); --shadow2:0 10px 28px rgba(17,88,125,.10); --radius:18px;}html, body{ background:var(--bg); color:var(--text); font-family: Inter, system-ui, -apple-system, Segoe UI, Roboto, Arial, sans-serif;}.page{ overflow:hidden;}/* smooth anchor scroll */html{ scroll-behavior:smooth; }/* HERO */.hero{ position:relative; padding:56px 0 28px; background: radial-gradient(800px 400px at 20% 10%, rgba(179,223,240,.55), transparent 65%), radial-gradient(900px 520px at 85% 15%, rgba(17,88,125,.25), transparent 60%), linear-gradient(180deg, rgba(17,88,125,.06), rgba(17,88,125,.00)); border-bottom:1px solid var(--border);}.hero-grid{ display:grid; grid-template-columns: 1.05fr .95fr; gap:28px; align-items:center;}.hero-top{ grid-column:1 / -1; display:flex; align-items:center; justify-content:space-between; gap:16px; padding:14px 16px; background:rgb(236, 235, 235); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); border:1px solid var(--border); border-radius:999px; box-shadow: var(--shadow2);}.brand-lockup{ display:flex; align-items:center; gap:12px; text-decoration:none; }.brand-logo{ height:34px; width:auto; display:block; }.hero-nav{ display:flex; align-items:center; gap:14px; }.hero-nav a{ color:var(--text); text-decoration:none; font-weight:600; font-size:14px; padding:10px 12px; border-radius:999px; transition: transform .15s ease, background .15s ease;}.hero-nav a:hover{ background:rgba(179,223,240,.35); transform: translateY(-1px); }.hero-nav .nav-cta{ color:white; background:linear-gradient(135deg, var(--primary), var(--accent)); box-shadow: 0 10px 24px rgba(17,88,125,.20);}.hero-copy h1{ letter-spacing:-0.02em; line-height:1.05; margin-top:10px;}.badge{ display:inline-flex; align-items:center; gap:8px; padding:8px 12px; border-radius:999px; border:1px solid var(--border); background:rgba(255,255,255,.6); font-weight:700; font-size:12px; color:var(--primary);}.hero-visual img{ width:100%; height:auto; display:block; border-radius:24px; box-shadow: var(--shadow);}.trust{ display:flex; flex-wrap:wrap; gap:10px; margin-top:16px;}.pill{ padding:8px 12px; border-radius:999px; border:1px solid var(--border); background:rgba(255,255,255,.62); font-weight:600; font-size:13px;}/* SECTIONS */.section{ padding:64px 0;}.section h2{ letter-spacing:-0.02em;}.cards{ gap:18px;}.card{ background: var(--surface); border:1px solid var(--border); border-radius: var(--radius); box-shadow: var(--shadow2); position:relative; overflow:hidden;}.card:before{ content:""; position:absolute; inset:-2px; background: radial-gradient(420px 220px at 20% 0%, rgba(179,223,240,.55), transparent 65%); opacity:.55; pointer-events:none;}.card > *{ position:relative; }.card-icon{ width:56px; height:56px; border-radius:16px; border:1px solid var(--border); background:rgba(255,255,255,.75); display:flex; align-items:center; justify-content:center; margin-bottom:12px; box-shadow: 0 12px 28px rgba(17,88,125,.10);}.card-icon img{ width:42px; height:42px; display:block; }.card h3{ margin-top:0; }/* PROCESS */.process-grid{ display:grid; grid-template-columns: 1.1fr .9fr; gap:26px; align-items:start;}.process-visual img{ width:100%; height:auto; display:block; border-radius:24px; border:1px solid var(--border); box-shadow: var(--shadow2);}.steps{ background:rgba(255,255,255,.60); border:1px solid var(--border); border-radius: var(--radius); padding:18px 18px 18px 26px; box-shadow: var(--shadow2);}.steps li{ padding:8px 0; }/* CTA */.cta{ background: radial-gradient(800px 380px at 15% 20%, rgba(179,223,240,.55), transparent 60%), radial-gradient(900px 520px at 85% 50%, rgba(17,88,125,.22), transparent 60%), linear-gradient(180deg, rgba(17,88,125,.05), rgba(17,88,125,.00)); border-top:1px solid var(--border); border-bottom:1px solid var(--border);}.btn{ border-radius:999px !important; border:1px solid var(--border) !important; background:rgba(255,255,255,.75) !important; transition: transform .15s ease, box-shadow .15s ease, background .15s ease;}.btn:hover{ transform: translateY(-1px); box-shadow: 0 14px 30px rgba(17,88,125,.14);}.btn.primary{ border:none !important; color:white !important; background:linear-gradient(135deg, var(--primary), var(--accent)) !important; box-shadow: 0 14px 30px rgba(17,88,125,.22);}/* CONTACT FORM */.form{ background:rgba(255,255,255,.72); border:1px solid var(--border); border-radius: var(--radius); box-shadow: var(--shadow2);}input, textarea, select{ border-radius:14px !important; border:1px solid rgba(17,88,125,.20) !important; background:rgba(255,255,255,.92) !important;}input:focus, textarea:focus{ outline:none !important; box-shadow: 0 0 0 4px rgba(179,223,240,.45) !important; border-color: rgba(17,88,125,.35) !important;}/* FOOTER */.footer{ padding:40px 0 60px; background: linear-gradient(180deg, rgba(17,88,125,.02), rgba(17,88,125,.00));}.footer-grid{ display:flex; align-items:flex-start; justify-content:space-between; gap:22px; flex-wrap:wrap;}.footer-logo{ height:36px; width:auto; display:block; margin-bottom:10px; }.footer-links{ display:flex; gap:14px; flex-wrap:wrap; }.footer-links a{ text-decoration:none; font-weight:700; color:var(--primary); padding:10px 12px; border-radius:999px; border:1px solid var(--border); background:rgba(255,255,255,.68);}.footer-links a:hover{ background:rgba(179,223,240,.35); }/* RESPONSIVE */@media (max-width: 900px){ .hero-grid{ grid-template-columns: 1fr; } .hero-top{ border-radius: 18px; } .hero-nav{ gap:8px; } .hero-nav a{ padding:10px 10px; } .process-grid{ grid-template-columns: 1fr; }}', object(MappedAsset))
(vendor/symfony/asset-mapper/Factory/MappedAssetFactory.php:107)
at Symfony\Component\AssetMapper\Factory\MappedAssetFactory->compileContent(object(MappedAsset))
(vendor/symfony/asset-mapper/Factory/MappedAssetFactory.php:51)
at Symfony\Component\AssetMapper\Factory\MappedAssetFactory->createMappedAsset('styles/landing.css', '/home/obfwrfm/www/landing.numelan.fr/assets/styles/landing.css')
(vendor/symfony/asset-mapper/Factory/CachedMappedAssetFactory.php:43)
at Symfony\Component\AssetMapper\Factory\CachedMappedAssetFactory->createMappedAsset('styles/landing.css', '/home/obfwrfm/www/landing.numelan.fr/assets/styles/landing.css')
(vendor/symfony/asset-mapper/AssetMapper.php:41)
at Symfony\Component\AssetMapper\AssetMapper->getAsset('styles/landing.css')
(vendor/symfony/asset-mapper/AssetMapper.php:47)
at Symfony\Component\AssetMapper\AssetMapper->allAssets()
(vendor/symfony/asset-mapper/AssetMapperDevServerSubscriber.php:193)
at Symfony\Component\AssetMapper\AssetMapperDevServerSubscriber->findAssetFromCache('/assets/images/numelan-7diYsCe.ico')
(vendor/symfony/asset-mapper/AssetMapperDevServerSubscriber.php:127)
at Symfony\Component\AssetMapper\AssetMapperDevServerSubscriber->onKernelRequest(object(RequestEvent), 'kernel.request', object(TraceableEventDispatcher))
(vendor/symfony/event-dispatcher/Debug/WrappedListener.php:115)
at Symfony\Component\EventDispatcher\Debug\WrappedListener->__invoke(object(RequestEvent), 'kernel.request', object(TraceableEventDispatcher))
(vendor/symfony/event-dispatcher/EventDispatcher.php:206)
at Symfony\Component\EventDispatcher\EventDispatcher->callListeners(array(object(WrappedListener), object(WrappedListener), object(WrappedListener), object(WrappedListener), object(WrappedListener), object(WrappedListener), object(WrappedListener), object(WrappedListener), object(WrappedListener), object(WrappedListener), object(WrappedListener), object(WrappedListener)), 'kernel.request', object(RequestEvent))
(vendor/symfony/event-dispatcher/EventDispatcher.php:56)
at Symfony\Component\EventDispatcher\EventDispatcher->dispatch(object(RequestEvent), 'kernel.request')
(vendor/symfony/event-dispatcher/Debug/TraceableEventDispatcher.php:126)
at Symfony\Component\EventDispatcher\Debug\TraceableEventDispatcher->dispatch(object(RequestEvent), 'kernel.request')
(vendor/symfony/http-kernel/HttpKernel.php:159)
at Symfony\Component\HttpKernel\HttpKernel->handleRaw(object(Request), 1)
(vendor/symfony/http-kernel/HttpKernel.php:76)
at Symfony\Component\HttpKernel\HttpKernel->handle(object(Request), 1, true)
(vendor/symfony/http-kernel/Kernel.php:182)
at Symfony\Component\HttpKernel\Kernel->handle(object(Request))
(vendor/symfony/runtime/Runner/Symfony/HttpKernelRunner.php:35)
at Symfony\Component\Runtime\Runner\Symfony\HttpKernelRunner->run()
(vendor/autoload_runtime.php:29)
at require_once('/home/obfwrfm/www/landing.numelan.fr/vendor/autoload_runtime.php')
(public/index.php:5)
|